2016-08-15 100 views
2

我想通過在col_name_dt1中搜索匹配的名稱來替換dt2中的列名,然後將其重新應用於col_name_masked中的內容。我想我可以用某種方式使用match commad?根據匹配的名稱更改列名稱

> col_name_dt1 
    col_name col_name_masked 
1  1_JH    1 
2 107_MAE    4 
3 108_IME    3 
4 109_GW    2 

> colnames(dt2) 
[1] "1_JH"  "107_MAE" "108_IME" "109_GW" 

注:col_name_dt1含有比dt2發現更多的名字。的dt2的長度爲62個,而dim(col_name_dt1)是96

輸出

> colnames(dt2) 
[1] "1"  "4" "3" "2" 

回答

1

嘗試,

col_name_dt1$col_name_masked[match(colnames(dt2), col_name_dt1$col_name)] 

#[1] 1 4 3 2 
+1

對不起,我忘了說,這兩個DF的長度是不一樣的,這創建了一些NAs。查看更新 – BioMan

+0

在這種情況下,只需在'match'中顛倒順序即可。查看更新。 –