2013-04-18 2 views
2

그래서 나는 당신이있는 경우에 알고 R :행렬의 [] 연산자는

m = matrix(1:9, 3,3) 
z = as.matrix(expand.grid(1:3, 1:3)) 

을하고

m[z] 
# you get back 1 2 3 4 5 6 7 8 9 

할하지만

m[] = m[z] 
# You get back a matrix.. 

을 할 경우 내가 해요 이 [] 연산자가 무엇을하는지 조금 혼란 스럽습니까? 왜 m[][z] 또는 m[z][]과 같은 것이 매트릭스를 반환하지 않습니까? 행렬을 반환하려면 어떻게해야합니까?없이 변수를 할당하면

고마워요!

+0

'm [z]'에서 어떻게 되길 기대합니까? 불일치는 어디에 있습니까? 기억하세요, R에서'matrix'는 치수가있는'vector'입니다 ... – Justin

+0

글쎄, 매트릭스를 기대합니다. 나는 그것이 벡터를 반환한다는 것을 안다. 그러나'matrix (vector, nrow, ncol)'와 같은 벡터로부터 새로운 행렬을 만드는 대신,이 유용한 연산자를 발견했습니다. 나는 그것에 관한 문서를 찾지 못했습니다. – by0

+4

"["는 "? Extract' 또는'?"[ "'. _주의 깊게 공부해야합니다. 다른 일반적인 함정을 피하려면 5 가지 이상을 읽으십시오. –

답변

2

여기서 중요한 것은 "[]"(실제로 함수 임)의 인수가 입력 한대로 두 개의 열 행렬 인 경우 결과는 첫 번째 열이 행을 지정하고 두 번째 열이 조작 된 행렬에서 열을 지정합니다. 이것은 언어의 "기능"(그리고 제가 추가 할 수있는 아주 편리한 기능)입니다.

인수에는 행과 열의 가능한 모든 조합이 포함될 수도 있고 포함되지 않을 수도 있으므로 예상대로 결과가 같은 차원의 행렬이 될 수 있습니다. 양식 : m[] <- m[ z[1:4, ] ]은 결과뿐만 아니라 경고를 생성합니다. 결과를보고 무엇이 일어나고 있는지 이해하려고 노력해야합니다.