0

MATLABからインポートしたテーブルにヒートマップをプロットしたいと思います。テーブルには明示された行名と列名があり、を使用してRにロードしましたread.table。実行summary(i)して、各列の数値の要約を取得できます。

i = read.table("file.txt",header=TRUE)

しかし、実行しようとするとheatmap、変換された行列が数値ではなく、ある場合とない場合の両方で不平を言いますrownames.force=TRUE

is.matrix(as.matrix(i,rownames.force=TRUE))
[1] TRUE

heatmap(as.matrix(i,rownames.force=TRUE))
 Error in heatmap(as.matrix(i, rownames.force = TRUE)) : 
   'x' must be a numeric matrix

as.matrix問題は、数値以外の行名(またはcolname、もうわかりません:-())を変換しようとすることだと思います。

as.matrix(i)[1]
[1] "cluster-594-walk-0161"

何か案は?

4

2 に答える 2

2

再現可能な例がなければ、何がうまくいかないかを推測することができますが、エラーは、行列に数字ではなく(おそらく)文字が含まれていることを示しています。これは機能しますか:

i = as.numeric(i)
heatmap(as.matrix(i,rownames.force=TRUE))

そしての出力は何ですか:

is.numeric(as.matrix(i)[1])

(おそらくFALSE)。


編集:あなたの編集は、マトリックスが数字ではなく文字を含んでいることを示しています。テキストファイルに、行名が追加の列(おそらく最初の列)として含まれている可能性があります。その場合:

i = read.table("file.txt", header = TRUE, row.names = 1)

最初の列を行名として読み取ります。read.tableしたがって、問題は、行列への変換ではなく、にある可能性が最も高いです。

于 2012-06-25T10:21:14.667 に答える
0

解決策は、最初に行名を定義してから、データフレームを行列に変換してから、生の名前を再度挿入することです。完全に機能するはずです

rnames <- data[,1]    # assign labels in column 1 to "rnames"

mat_data <- data.matrix(data[,2:ncol(data)])  # transform column 2-5 into a matrix

rownames(mat_data) <- rnames                  # assign row names

heatmap.2(mat_data, col=redblue(256), scale="row", key=T, keysize=1.5, trace="none",cexCol=0.9,srtCol=45)   # your heatmap
于 2017-11-08T06:53:40.997 に答える