R将数据转换为factor会破坏所有其他data.frame列

时间:2015-07-15 04:52:46

标签: r

我有一个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

1 个答案:

答案 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