【问题标题】:Loop to rename fields in an R dataframe循环重命名 R 数据框中的字段
【发布时间】:2014-11-22 02:07:46
【问题描述】:

我在 R 中有一个从 csv 文件中读取的数据框。如何将字符串(“EA”)附加到所有列名的末尾?我已经找到了适用于单列的代码,但由于某种原因,我的循环没有返回重命名的字段。

这是数据框:

> str(mydataframe)
'data.frame':   8368 obs. of  4 variables:
 $ gene: Factor w/ 8368 levels "A1BG","A1CF",..: 6949 4379 7111 4691 2331 4914 506 4985 7109 2072 ...
 $ p   : num  1.23e-09 1.05e-07 1.20e-07 2.53e-07 6.67e-07 ...
 $ beta: num  2.86 2.52 2.51 1.72 2.34 ...
 $ se  : num  0.471 0.474 0.474 0.334 0.471 ...

代码如下:

for(i in names(mydataframe)){ 
    i_renamed <- paste(i, "EA", sep=".")
    mydataframe$i_renamed <- mydataframe$i
    mydataframe$i <- NULL
}

...但之后对象还是一样的

> str(mydataframe)
'data.frame':   8368 obs. of  4 variables:
 $ gene: Factor w/ 8368 levels "A1BG","A1CF",..: 6949 4379 7111 4691 2331 4914 506 4985 7109 2072 ...
 $ p   : num  1.23e-09 1.05e-07 1.20e-07 2.53e-07 6.67e-07 ...
 $ beta: num  2.86 2.52 2.51 1.72 2.34 ...
 $ se  : num  0.471 0.474 0.474 0.334 0.471 ...

所需的结果是字段“gene.EA”与所有列的原始“gene”字段等相同

谢谢

【问题讨论】:

    标签: r string dataframe rename


    【解决方案1】:

    您可以避免尝试使用循环来执行此操作。

    names(mydataframe) <- paste0(names(mydataframe), '.EA')
    

    或者明确地说,你可以这样做:

    mydataframe <- setNames(mydataframe, paste0(names(mydataframe), '.EA'))
    

    【讨论】:

      猜你喜欢
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 2022-11-07
      • 2012-12-06
      相关资源
      最近更新 更多