循环以重命名R数据帧中的字段

时间:2014-09-27 00:32:37

标签: r string dataframe rename

我在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 ...

期望的结果是一个领域&#34; gene.EA&#34;这与原始基因#34;相同所有列的字段等

谢谢

1 个答案:

答案 0 :(得分:4)

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

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

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

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