2014-09-05 2 views
2

데이터 프레임이 있고 특정 열에 특정 값이있는 행을 추출하고 싶습니다. 열 이름은 문자 배열에 저장되고 값은 목록에 저장됩니다. 분명히데이터 프레임을 동적으로 열 이름으로 인덱싱

data <- data.frame(A=c("a","b","b"), B=c(1,2,2), C=(3,3,4)) 
column_key <- c("A", "B") 
value_key <- list("b", 2) 

, 내가 키의 열 이름을 하드 코딩하면 내가 간단한 색인으로 원하는 정보를 추출 할 수 있습니다 :

desired_rows <- data[data$A=="b" & data$B==2,] 

desired_rows = 
    A B C 
2 b 2 3 
3 b 2 4 

그러나 어떻게이 열 이름이 변수에 저장됩니다 않는 경우를 . 이상적으로는 다음과 같을 것입니다 :

key <- value_key 
names(key) <- column_key 
desired_rows <- data[key,] 

그러나 목록으로 data.frame을 색인화 할 수 없습니다.

답변

2

이 트릭을 질문을 게시하기 직전에 발견했습니다.

각 행의 어떤 요소가 목록의 해당 요소와 일치하는지 나타내는 논리 행렬을 반환하는 행과 길이가 같은 목록과 데이터 프레임을 비교할 수 있습니다. 완전히 일치하는 행을 찾으려면 applyall 행의 기능을 사용하여 data 행에 논리적 색인을 가져옵니다.

desired_rows <- data[apply(data[column_key]==value_key, 1, all),] 
+0

기다리기 전에 질문에 답변 해주십시오. 아니면 여전히 해결책을 찾고 있습니까? – nrussell

+0

@nrussell 좋습니다. 그래서 SO의 주 목적은 OP를 돕는 것이 아니라 다른 사람들을위한 리소스를 만드는 것입니다. – Roland

+0

@Roland 좋아요. 에티켓에 대해서는 잘 모르겠지만 메타 스택 교환에서 살펴 봤습니다. 고맙습니다. – nrussell

관련 문제