-1

ヘッダー付きのマトリックスがあり、マトリックスの列ヘッダーの最初の位置に「遺伝子」という単語を追加し、基本的にその単語を列ヘッダーの先頭に付けたいと思います。

ここに私がこれまでに持っているものがあります: Rに行列を入力し、

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

heatmap.2 を使用して、そのマトリックスからヒートマップを生成します。次に、carpet 変数を使用して、対応するヒートマップのデータを抽出します。

ヒートマップの生成に使用されるコードは次のとおりです。

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の出力を実行した後の dataSet は次のとおりです。dput(head(new_matrix))

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 に答える