2014-09-27 129 views
2

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

下面是数据框:

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

期望的结果是与原始“基因”字段等同的所有列的字段“基因.EA”

谢谢

回答

4

您可以避免尝试使用循环来做到这一点。

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

或明确的,你可以这样做:

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

的感谢!我对R有点新,但是这样做 – alexhli 2014-09-27 00:58:30