2011-08-10 2 views
-3

나는 전체 행렬의 목록을 가지고 각각의 행렬처럼 보이는특정 조건에 대한 필터링 후 매트릭스

 P V E T R L K A - 
    P 17 0 1 0 0 0 0 0 0 
    S 3 0 2 0 1 1 1 0 0 
    O 2 0 0 1 0 0 0 0 1 
    V 0 2 0 0 0 0 0 1 0 
    M 0 3 0 0 0 0 0 0 0 
    L 3 0 0 0 0 0 0 0 0 
    C 1 0 0 0 0 0 0 0 0 

필터링, 나는 각각의 모습을 2 * 2 매트릭스의 목록, 왼쪽 오전 :

P E 
P 17 1 
S 3 2 

전체 행렬에서 2 * 2 행렬의 열만 선택하면됩니다. 어떻게 선택합니까?

+1

이 자동으로이 질문을 downvoted 경우 확장하십시오

colnames(sub) [1] "P" "E" 

그런 다음 전체 행렬에서 이러한 열을 추출하는 배열의 부분 집합을 사용하여 문제가 무엇인지, 문제를 해결하는 방법을 말하면서 OP에게 호의를 보입니다. – Andrie

+0

당신이하려는 일은 내게 명백하지 않습니다. 확장 할 수 있습니까? 이 예제에서 전체 행렬에서 열 P와 E를 추출 하시겠습니까? – Andrie

+1

귀하의 질문을 명확히하는 것 외에도, 여기에있는 지침에 따라 재현 가능해야합니다 (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). 과거의 질문은 재현성이없는 패턴을 보여 주며 더 나은 질문을 게시하는 방법을 배우면 훨씬 더 좋은 답변을 얻을 수 있습니다 : –

답변

1

질문은 완전히 명확하지 않지만 전체 행렬에서 특정 열을 추출하는 방법을 찾으려하고있는 것으로 보입니다. 추출 할 열은 작은 행렬에있는 열이므로이 경우 열 PE을 추출하십시오.

이렇게하는 방법입니다. 먼저 colnames을 사용하여 작은 행렬의 열 이름을 찾습니다.

full[, colnames(sub)] 
    P E 
P 17 1 
S 3 2 
O 2 0 
V 0 0 
M 0 0 
L 3 0 
C 1 0 

귀하의 데이터는 다음과 같습니다 :

full <- structure(c(17L, 3L, 2L, 0L, 0L, 3L, 1L, 0L, 0L, 0L, 2L, 3L, 
0L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
0L, 0L, 0L), .Dim = c(7L, 9L), .Dimnames = list(c("P", "S", "O", 
"V", "M", "L", "C"), c("P", "V", "E", "T", "R", "L", "K", "A", 
"X."))) 

sub <- structure(c(17L, 3L, 1L, 2L), .Dim = c(2L, 2L), .Dimnames = list(
    c("P", "S"), c("P", "E"))) 
+0

대단히 고맙습니다. 제 질문에 올바르게 답하지 못해서 사과드립니다. 추가 질문이 재현 될 수 있습니다. – Ram

관련 문제