我有以下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
函数时,列的所有值都相同;如果我手动完成它没有任何问题。
答案 0 :(得分:1)
改为使用lapply
:
r <- data.frame(lapply(u, function(x) factor(x, levels = c(0,1))))
所有数据框都是列表列表,因此这自然有效。
apply
适用于mean
,sum
,median
等功能,但如果您不想调整正在处理的数据框, lapply
更合适。