-1

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

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

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

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

这是用于生成热图的代码:

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)

在这里,我试图将名称“基因”附加到列名

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

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

这是我的数据集的链接: 完整数据集

这是运行dput(head(new_matrix)) dput 输出后的数据集

4

2 回答 2

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])
于 2012-10-09T20:11:59.983 回答
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()
于 2012-10-09T21:33:21.083 回答