R - 根据与其他值的映射更改矩阵的列名

时间:2014-09-06 08:47:40

标签: r matrix

我是R的新手,我将在我的研究活动中使用它:)

问题是:

  • 我有一个矩阵

    gene.names.as.matrix

head(gene.names.as.matrix)

     EIF4E ULK3... RPS6 EIF4EBP1 STRADA CAB39 BRAF 
[1,]     0       0    0        0      0     0    0    
[2,]     0       0    0        0      0     0    0    
[3,]     0       0    0        0      0     0    0    
[4,]     0       0    0        0      0     0    0    
[5,]     0       0    0        0      0     0    0    
[6,]     0       0    0        0      0     0    0

包含许多行和其他列,为简洁起见,此处未显示这些行。

  • 我有另一个矩阵

    gene.id.map

head(gene.id.map)

      gene.symbol gene.id
1977  "EIF4E"     "1977" 
25989 "ULK3..."   "25989"
6194  "RPS6"      "6194" 
1978  "EIF4EBP1"  "1978" 
92335 "STRADA"    "92335"
51719 "CAB39"     "51719"
  • 我想更改

    的列名

    gene.names.as.matrix

基于矩阵中存在的值

gene.id.map

因此,结果矩阵应该是这样的:

     1977 25989 6194 [...]
[1,]     0       0    0     
[2,]     0       0    0     
[3,]     0       0    0 
[...]  

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

  colnames(gene.names.as.matrix)[match(gene.id.map[,1], colnames(gene.names.as.matrix))] <- genes.id.map[,2][match(gene.id.map[,1], colnames(gene.names.as.matrix))]

 gene.names.as.matrix
 #      1977 25989  6194  1978 92335 51719 BRAF
 #[1,]     0     0     0     0     0     0    0
 #[2,]     0     0     0     0     0     0    0
 #[3,]     0     0     0     0     0     0    0
 #[4,]     0     0     0     0     0     0    0
 #[5,]     0     0     0     0     0     0    0
 #[6,]     0     0     0     0     0     0    0