2014-09-27 40 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