通过查找

时间:2017-03-01 11:40:43

标签: r list lookup substitution

我有一个数据框,左上角看起来像这样:

             Row.names Chrom Position GT_1 GT_10 GT_100 GT_101 GT_103
1  SST4.03CH00_1006820     0  1006820 <NA>  TTTA   TTAA   TTTT   TTTT
2  SST4.03CH00_1006822     0  1006822 <NA>  CCCC   <NA>   CCCC   CCCC
3  SST4.03CH00_1006850     0  1006850 GGGA  GGGG   GGGG   <NA>   GGGG
4  SST4.03CH00_1117001     0  1117001 GGAA  GGGA   AAAA   GGGG   GGGA
5 SST4.03CH00_11378893     0 11378893 CCCC  <NA>   CCCA   CCCC   <NA>

我需要根据此列表更改以“GT_”开头的列标题,并使用替代名称:

GT_1  Anna
GT_10 Beatrix
GT_100 Silvia
GT_101 Samoa
GT_103 Samurai

现在,我已经设法通过转置和合并并转置回来做到这一点。然而,这似乎是一种相当笨拙的方式。我很感激为这个经常性的任务提供更优雅/安全的解决方案。

1 个答案:

答案 0 :(得分:1)

使用以下概念重命名列:

df <- data.frame (a = rnorm(10), b = rnorm(10), c = rnorm(10), d = rnorm(10))


old <- c('a','b','c')
new <- c('z','x', 'y')
rename <- na.omit(match(names(df),old))
names(df)[rename] <- new[rename]