2011-11-18 5 views
2

데이터 매트릭스 (data)는 54675obs입니다. 170 변수 중. 수행하고 싶습니다행렬의 서브 세트는 log2에 대한 R의 숫자입니다.

data.matrix.2 <- log2(data[,9:ncol(data)]) 

즉 9 번째 이후의 값을 나타냅니다. 앞에있는 8 개의 열은 문자입니다. 다음 오류가 발생합니다.

Error in Math.data.frame(data.matrix[, 9:ncol(data)]) : 
    non-numeric variable in data frame: 

행렬의 하위 집합을 로그 변환으로 취급 할 수있는 방법이 있습니까?

감사

답변

3

내 첫번째 생각은 당신이 문자 행렬을 얻었다 필요했다고했다 :

as.numeric(data.matrix.2[ , -(1:8) ]) 

...하지만 data.matrix()는 '숫자'모드로 강제해야한다. 오, 아니, 너 거기 간다. 당신은 data.matrix 함수를 사용하지 않았습니다 .... 그래서 R 함수의 이름이기 때문에 "data.matrix"라는 이름을 사용하지 않는 것이 더 낫습니다.

데이터 개체에 대한 가정에 결함이있을 수 있으므로 "[,]"을 올바르게 사용하고 있습니다. 나머지 162 열에 요소 또는 문자로 작성된 데이터 열이 있어야합니다. str (data.matrix)을 실행하여 그 중 하나가 무엇인지 확인해야합니다.

+0

또는'which (! sapply (data.matrix.2, is.numeric)) ' –

+0

예. 훨씬 더 컴팩트 한 출력과 오류를 쉽게 찾을 수 있습니다. –