基于逻辑值R表的子集向量

时间:2014-02-17 12:34:34

标签: r loops vector boolean subset

我正在尝试基于许多输入对矢量进行子集化。 file.list将是我想要子集的文件名向量,物种将是我想在文件中搜索的物种名称。

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 个答案:

答案 0 :(得分:0)

grep可用于实际返回匹配而不是逻辑值:

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