data.frame的每一列作为两个级别的因子

时间:2017-12-05 14:36:28

标签: r refactoring apply

我有以下data.frame

# Define data.frame 
  u<-data.frame(matrix(c(0,0,0,1,0,1,1,1,0), nrow=3))
# Define each column as a factor with two levels 
  r <- as.data.frame(apply(u,2,function(x) factor(x, levels = c(0,1))))

虽然我将因子函数应用于定义级别的每一列,但第一列只显示其中一个(0;列中唯一的值),我希望它是一个具有两个级别的因子(0和1) )。

关于如何解决它的任何想法?

问题是使用apply函数时,列的所有值都相同;如果我手动完成它没有任何问题。

1 个答案:

答案 0 :(得分:1)

改为使用lapply

r <- data.frame(lapply(u, function(x) factor(x, levels = c(0,1))))

所有数据框都是列表列表,因此这自然有效。

apply适用于meansummedian等功能,但如果您不想调整正在处理的数据框, lapply更合适。