df<-structure(list(V1 = c(1L, 2L, 2L, 3L, 2L), V2 = c(1L, 3L, 3L,
1L, 2L), V3 = c(2L, 2L, 1L, 2L, 3L)), .Names = c("V1", "V2",
"V3"), class = "data.frame", row.names = c(NA, -5L))
问题
要编写改变可变成一个函数: 甲如果变量是1 B如果变量为2 C如果变量为3
Wh在我试过
我写了一个函数,但不知何故它无法更新函数外的值。如果我直接运行它,它可以工作。
test_recode<-function(x){
require("memisc")
x<-cases("A"<-x==1,
"B"<-x==2,
"C"<-x==3)}
test_recode(df$V1)
该函数运行时没有错误,但数据帧仍未更改。
但是,它运行良好,没有这个功能。
df$V1<-cases("A"<-df$V1==1,
"B"<-df$V1==2,
"C"<-df$V1==3)
进一步意见
我做了一些研究,发现它与<的事 - 和< < - 但是当我改变X < - 为x < < - 它赋值为x从字面上。我怎么能告诉函数将值分配给我指定为参数的变量?
另外,我需要坚持使用memisc
cases
函数。
'之开关是你需要的功能:'$ DF V1 < - sapply(DF $ (关于你的函数,你需要返回一些东西:'return(x)') – Cath
然后,你还需要分配结果, 'df $ V1 <-test_recode(df $ V1)'。 – mtoto
@moto:但我已经完成了我的功能: –