【问题标题】:Error when converting dataframe row to character vector将数据帧行转换为字符向量时出错
【发布时间】:2014-03-22 04:57:32
【问题描述】:

所以我有以下数据框,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" 

发生了什么事?

【问题讨论】:

    标签: r vector character


    【解决方案1】:

    问题在于您的 data.frame 列不是字符而是因素(阅读 R 介绍中的差异。)

    你必须这样做:

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

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

    您可以尝试确保您的 data.frame 首先不包含因子。大多数情况下,这是通过将stringsAsFactors = FALSE 添加到data.frameas.data.frameread.tableread.csv 等您可能使用过的函数来完成的。如果你在某处使用了read.table,我强烈建议你也考虑使用header = TRUE 来获得你想要的colnames。

    【讨论】:

      猜你喜欢
      • 2019-03-11
      • 1970-01-01
      • 2023-01-18
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      相关资源
      最近更新 更多