将数据帧行转换为字符向量时出错

时间:2014-03-22 04:57:33

标签: r vector character

所以我得到了以下数据框,datafr。

          X1            X2               X1.1          X2.1              
      Composite       Element          Composite       Element          
14-3-3_epsilon-M-C -0.8660101895 14-3-3_epsilon-M-C -0.6814387425          
4E-BP1_pS65-R-V  0.1056560215    4E-BP1_pS65-R-V  0.1787506005    
4E-BP1_pT37T46-R-V  0.6408257495 4E-BP1_pT37T46-R-V -0.7485933875 
4E-BP1_pT70-R-C  0.6413568085    4E-BP1_pT70-R-C  0.9554481415    

我想让第二行成为列名,所以我看一下

datafr[1,]

一切都应该是

        X1      X2      X1.1      X2.1   
 Composite    Element   Composite Element

但是,当我将其转换为字符向量时,我会将单词更改为数字...

as.character(c(datafr[1,]))
[1] "49"  "161" "49"  "161" 

发生了什么事?

1 个答案:

答案 0 :(得分:4)

问题是你的data.frame列不是字符而是因素(请参阅R介绍中的差异。)

你必须这样做:

as.character(unlist(datafr[1, ]))

从当前数据中获取字符向量。但是,您可能希望在代码中上游修复问题:

您可以尝试确保您的data.frame首先不包含因素。大多数情况下,这是通过向stringsAsFactors = FALSEdata.frameas.data.frameread.table等函数添加read.csv来完成的。如果您在某个地方使用read.table,我强烈建议您首先使用header = TRUE来获取您想要的字母名称。