2014-02-17 7 views
0

여러 입력을 기반으로 벡터의 하위 집합을 만들려고합니다. file.list는 하위 집합으로 만들 파일 이름의 벡터가 될 것이고 종은 내가 파일 내에서 검색하고자하는 종의 이름이 될 것입니다. 내가 가지고있는 코드와 논리 값 테이블을 기반으로하는 서브 세트 벡터 R

file.list <- c("blah_cod", "blah_had", "blah_ggu", "blah_cod") 
species <- c("cod", "had") 
a<-sapply(species, grepl, file.list, ignore.case=TRUE) 

     cod had 
[1,] TRUE FALSE 
[2,] FALSE TRUE 
[3,] FALSE FALSE 
[4,] TRUE FALSE 

file.list[a[,1]] 
file.list[a[,2]] 

현재 나는 내가 원하는 것을 얻을 수 있어요,하지만 난 그게 같은 열 수는 사용자가 종 입력의 수에 따라 달라집니다 자동화 할 수 있어야합니다.

for (i in (1:ncol(a))){b<-file.list[a[,i]]} 

나는 이러한 라인을 따라 조합의 숫자를 시도했지만, 하나는 내가 필요로하는 정보 나 오류의 일부만을 얻을 :이 같은 반복했습니다. 어떤 아이디어?

+1

당신은 오류의 종류를 얻었 는가? 여기 붙여 주실 래요? – Llopis

+0

결과는 어떻게 생깁니 까? – Beasterfield

+0

대체로 루프의 다른 메소드를 시도해 보면 대체로 오류가 발생합니다 : 대체 할 아이템의 수는 대체 길이의 배수가 아닙니다 – Tom

답변

0

grep 실제로 대신 논리 값의 일치를 반환하는 데 사용할 수 있습니다

lapply(species, grep, file.list, ignore.case=TRUE, value=TRUE) 
#[[1]] 
#[1] "blah_cod" "blah_cod" 
# 
#[[2]] 
#[1] "blah_had"