【发布时间】:2016-11-18 09:42:56
【问题描述】:
我有一组字符变量,我试图通过创建以下函数并使用 apply() 函数将它们转换为二进制:
a <- as.factor(c("n/a", "False", "False", "True"))
b <- as.factor(c("n/a", "True", "False", "True"))
y <- data.frame(a,b)
conv <- function(x){
levels(x)[which(levels(x)=="n/a")] <- NA
levels(x)[which(levels(x)=="False")] <- 0
levels(x)[which(levels(x)=="True")] <- 1
x <- as.numeric(levels(x))[x]
return(x)
}
apply(y,2, conv)
但是,当我这样做时,它会输出 NA。或者,如果您按列应用函数,它可以工作:
conv(y[,1])
conv(y[,2])
预期的输出应该是:
y:
NA NA
0 1
0 0
1 1
对为什么会发生这种情况有任何想法吗?谢谢。
【问题讨论】:
-
你能显示你的预期输出吗?
-
@akrun 我刚刚将它添加到帖子中。
-
你的函数没问题,用
lapply代替apply。