我有一个data.frame,所有列都是数字。我想将一个整数列转换为因子,但这样做会将所有其他列转换为类字符。反正只是将一列转换为因子吗?
示例来自Converting variables to factors in R:
myData <- data.frame(A=rep(1:2, 3), B=rep(1:3, 2), Pulse=20:25)
myData$A <-as.factor(myData$A)
结果
apply(myData,2,class)
# A B Pulse
# "character" "character" "character"
sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] splines stats graphics grDevices utils datasets methods base ...
str(myData$A)
# Factor w/ 2 levels "1","2": 1 2 1 2 1 2
答案 0 :(得分:1)
我的代码在测试时确实有效。
这是我str(myData)
的输出:
'data.frame': 6 obs. of 3 variables:
$ A : Factor w/ 2 levels "1","2": 1 2 1 2 1 2
$ B : int 1 2 3 1 2 3
$ Pulse: int 20 21 22 23 24 25
您的问题是因为?apply
声明:
'apply'试图胁迫 如果它是二维的(例如,数据,则通过'as.matrix'到一个数组 帧)
这是在对每列执行函数之前完成的。当你运行as.matrix(myData)
时,你最终会把所有东西都强加给一个类,在这种情况下是字符数据:
is.character(as.matrix(myData))
#[1] TRUE