为r中的现有矩阵的列标题添加名称

时间:2012-10-09 19:56:24

标签: r header matrix

我有一个带标题的矩阵,我想在矩阵的列标题中的第一个位置添加“基因”这个词,基本上将该单词附加到列标题的开头。

这是我到目前为止所拥有的: 我将一个矩阵输入R,

matrix_a <- read.table(args[1], sep='\t', header=T, row.names=1);

使用heatmap从该矩阵生成热图。然后,我使用地毯变量提取相应热图的数据。

以下是用于生成热图的代码:

result <- heatmap.2(mtscaled, Rowv=T, scale='none', dendrogram="row", symm = T, col=bluered(16), breaks = my.breaks)

这里我在通过heatmap.2传递原始矩阵后提取聚类矩阵的值:

new_matrix <- result$carpet
old_name <- colnames(new_matrix)

这里我试图将名称“genes”附加到列名

old_name <- cat("genes",old_name)
colnames(new_matrix) <- old_name;
write.table(new_matrix, file="data_result3.txt",sep = " \t",col.names = T, row.names = T);

当我尝试使用“

”将“基因”附加到标题时
old_name <- cat("genes",old_name)

标题正确打印到屏幕上, 但是当我检查结果文件时,会打印出矢量编号:

“V1”“V2”“V3”“V4”“V5”“V6”

相反,我希望结果看起来像:

基因Pacs-11 Pacs-2 PC06E7.3 PC49C3.3 Pceh-60 PF52C6.12

通过这种方式,基因出现在矩阵标题的其余部分之前。

以下是我的数据集的链接: Full Dataset

这是运行dput(head(new_matrix))后的dataSet output of dput

2 个答案:

答案 0 :(得分:4)

# to have a space between gene and column_name 
old_name <- paste("genes", old_name, sep=" ")

编辑(根据您的新评论),也许您需要:

old_name <- c("genes", old_name)

这是一个简单的例子

> test <- matrix(1:50, ncol=5)
> test
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1   11   21   31   41
 [2,]    2   12   22   32   42
 [3,]    3   13   23   33   43
 [4,]    4   14   24   34   44
 [5,]    5   15   25   35   45
 [6,]    6   16   26   36   46
 [7,]    7   17   27   37   47
 [8,]    8   18   28   38   48
 [9,]    9   19   29   39   49
[10,]   10   20   30   40   50
> colnames(test) <- c("genes", paste("V", 1:4))
> test
      genes V 1 V 2 V 3 V 4
 [1,]     1  11  21  31  41
 [2,]     2  12  22  32  42
 [3,]     3  13  23  33  43
 [4,]     4  14  24  34  44
 [5,]     5  15  25  35  45
 [6,]     6  16  26  36  46
 [7,]     7  17  27  37  47
 [8,]     8  18  28  38  48
 [9,]     9  19  29  39  49
[10,]    10  20  30  40  50


# to only add "genes" as the first column's name
colnames(test) <- c("genes", colnames(test)[-1])

答案 1 :(得分:1)

我能够通过用基因打印出第一行然后剩下的来开始工作:

new_matrix <- result$carpet
old_name <- colnames(new_matrix)
sink("data_result3.txt")

cat(c("genes",old_name), "\n")

for (i in 1:nrow(new_matrix))
{
    cat (old_name[i], new_matrix[i,], "\n")
}

sink()