2012-06-25 4 views
0

MATLAB에서 가져온 테이블에 히트 맵을 플로팅하고 싶습니다. 표는 rownames 및 COLNAMES을 explicited하고 나는 read.table와 R로를로드 한, 나는 summary(i)을 실행하고 각 열에 대한 숫자 요약을 얻을 수 있습니다 :가져온 matlab 테이블의 R 히트 맵

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

하지만 heatmap를 실행하려고하면, 그것은 변환을 불평

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 시도가 숫자가 아닌 rowname을 변환 할 수 있다는 생각 (또는 COLNAME, 난 더 이상 :-(을 확실하지 않다) : 매트릭스와 rownames.force=TRUE없이 모두 숫자하지

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

아이디어가 있으십니까?

+1

재현 가능한 예제를 추가하십시오 ... –

+0

텍스트 파일의 첫 번째 5 줄과 같은 샘플을 포함 할 수 있습니까? –

+0

'str' 함수는 이와 같이 매우 유용합니다. 'str (i)'를 수행하여 행렬에 실제로 변수 유형에 포함되어 있다고 생각하는 내용이 포함되어 있는지 확인하십시오. 'head (i)'도 편리합니다. – SlowLearner

답변

2

재현 가능한 예제가 없으면 우리는 무엇이 잘못되었는지 추측하지만 오류는 행렬에 숫자가 있지만 (아마도) 문자가 포함되어 있지 않음을 나타냅니다.

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

와의 출력 무엇 :이 작업을 수행

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

(아마 FALSE는).


편집 : 귀하의 편집 매트릭스 문자가 아닌 수치가 포함되어 있음을 보여준다. 텍스트 파일에서 rownames가 아마도 첫 번째 열인 추가 열로 포함될 수 있습니다. 이 경우 :

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

첫 번째 열을 rownames로 읽습니다. 따라서 문제는 매트릭스로 변환하는 것이 아니라 read.table 일 가능성이 큽니다. 해결책은 단순히

+0

이 한 가지 문제가 해결되었지만 입력 파일에 고유하지 않은 항목이 있습니다. i = read.table (file, header = TRUE, row.names = 1) read.table (file, header = TRUE, row.names = 1) : 중복 'row.names'는 허용되지 않습니다. – 719016

+0

파일을 읽고 첫 번째 열을 버리고 숫자로 변환 한 다음 행렬을 만들 수 있습니다. 행 이름이 파일에 정의 된대로 필요합니까? –

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