我需要将许多数字列转换为因子类型.示例表:
df <- data.frame(A=1:10, B=2:11, C=3:12)
我尝试了申请:
cols<-c('A', 'B') df[,cols]<-apply(df[,cols], 2, function(x){ as.factor(x)});
但结果是一个角色类.
> class(df$A) [1] "character"
如果不为每列执行as.factor,我该怎么做?
尝试
df[,cols] <- lapply(df[,cols],as.factor)
问题是apply()
尝试将结果绑定到矩阵中,这会导致将列强制转换为字符:
class(apply(df[,cols], 2, as.factor)) ## matrix class(as.factor(df[,1])) ## factor
相反,lapply()
对列表元素进行操作.