我有一个名为“成人”的数据框
> str(adult[, 1:2)
'data.frame': 32561 obs. of 15 variables:
$ age : int 39 50 38 53 28 37 49 52 31 42 ...
$ worktp : Factor w/ 9 levels " ?"," Federal-gov",..: 8 7 5 5 5 5 5 7 5 5 ...
> is.factor(adult[,1])
[1] FALSE
> is.factor(adult[,2])
[1] TRUE
一切正常,直到我使用
> apply(adult[,1:2], 2, function(x) is.factor(x))
age worktp
FALSE FALSE
为什么我在worktp上得到假,其中is.factor()才给我TRUE?我真的需要这个apply()函数在我的数据框上工作。我应该使用其他一些与Apply相关的功能吗?
谢谢!
apply
会在处理数据之前将其转换为矩阵(请参阅中的“详细信息”部分?apply
)。在此步骤中,因子信息将丢失。
d <- data.frame(num=1:4, fac=factor(1:4))
d[, 2]
[1] 1 2 3 4
Levels: 1 2 3 4 # levels, hence a factor
m <- as.matrix(d)
m[, 2]
[1] "1" "2" "3" "4" # no levels anymore
apply(d, 2, is.factor)
num fac
FALSE FALSE # no factors as converted to matrix
为了得到你想要的东西,你可以使用 lapply
lapply(d, is.factor)
$num
[1] FALSE
$fac
[1] TRUE
或者 sapply
sapply(d, is.factor)
num fac
FALSE TRUE
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句