2014-12-17 4 views
1

이상한 문제가 있습니다. 이 행렬을보십시오 :R :이 매트릭스는 숫자가 아닌데 왜 숫자가 아닌가?

theta2 
     [,1]  [,2]  [,3]  
[1,] 0.1024147 0.0111102 -0.08898407 
[2,] -0.2182463 0.02381744 0.1164061 
[3,] -2.160951 -0.1846134 -0.2051436 
[4,] -1.915053 -0.2106328 -0.2388602 
[5,] -1.989786 -0.2017471 -0.2244937 
[6,] -2.013182 -0.1923669 -0.2284833 
[7,] -2.184123 -0.174379 -0.209156 
[8,] -2.052668 -0.1971675 -0.2291237 
[9,] -2.108423 -0.1987345 -0.2421515 
[10,] -2.066361 -0.2162237 -0.2430083 

모든 것은 숫자입니다. 우리는 그것의 종류를 본다 :

 class(theta2) 
[1] "matrix" 

아무 문제도 매트릭스가 아니다. 그리고 우리는 그것의 구조를 보았습니다 :

str(theta2) 
List of 30 
$ : num 0.102 
$ : num -0.218 
$ : num -2.16 
$ : num -1.92 
$ : num -1.99 
$ : num -2.01 
$ : num -2.18 
$ : num -2.05 
$ : num -2.11 
$ : num -2.07 
$ : num 0.0111 
$ : num 0.0238 
$ : num -0.185 
$ : num -0.211 
$ : num -0.202 
$ : num -0.192 
$ : num -0.174 
$ : num -0.197 
$ : num -0.199 
$ : num -0.216 
$ : num -0.089 
$ : num 0.116 
$ : num -0.205 
$ : num -0.239 
$ : num -0.224 
$ : num -0.228 
$ : num -0.209 
$ : num -0.229 
$ : num -0.242 
$ : num -0.243 
- attr(*, "dim")= int [1:2] 10 3 

왜 그것이 "30의 목록"인지 조금 이상합니다.

is.numeric(theta2) 
[1] FALSE 

사람이 여기 무슨 일이야 설명 할 수 : 나는 그것이 숫자라면을 선택하면 더 이상 은? 나는 초보자가 아니지만 나는 완전히 길을 잃는다!

+0

어떻게이 "매트릭스"를 만들었습니까? 당신이 정말로 가지고있는 것은 치수가 매겨진 목록 인 것 같습니다. – MrFlick

+0

@MrFlick 당신 말이 맞아요. 이것은 R- 함정과 같습니다. 지난 시간 동안 변환해야하는 데이터 프레임에서 가져온 행렬로 행렬 연산을 수행하기 위해 하루 종일 알아 냈습니다! 이번에는 목록과 함께. OMG :) –

+0

글쎄, 당신은 아직 그런 물체를 어떻게 만들지는 말하지 않았다. 이 "물건"을 생성하는 코드에 문제가있는 것 같습니다. 첫 번째 장소에서 올바르게 개체를 만든 경우 대답에 코드를 사용할 필요가 없습니다. – MrFlick

답변

2

아마, 당신은 당신이 is.numeric

sapply(theta2, is.numeric) 

lapply/sapply와 함께 당신은 theta2unlist 수있는 확인하고있는 matrix을 만들 수 있습니다하는 list이므로 list

set.seed(25) 
theta2 <- as.list(rnorm(30)) 

dim(theta2) <- c(10,3) 
class(theta2) 
#[1] "matrix" 

str(theta2, list.len=3) 
# List of 30 
#$ : num -0.212 
#$ : num -1.04 
#$ : num -1.15 
#[list output truncated] 
# - attr(*, "dim")= int [1:2] 10 3 

is.numeric(theta2) 
#[1] FALSE 

에서 매트릭스를 생성 적절한 치수

theta2N <- unlist(theta2) 
dim(theta2N) <- c(10,3) 
is.matrix(theta2N) 
#[1] TRUE 
is.numeric(theta2N) 
#[1] TRUE 
+0

크게 큰 감사! 이제 작동합니다. –