我有一个带标题的矩阵,我想在矩阵的列标题中的第一个位置添加“基因”这个词,基本上将该单词附加到列标题的开头。
这是我到目前为止所拥有的: 我将一个矩阵输入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
答案 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()