我正在尝试基于许多输入对矢量进行子集化。 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]]}
我也沿着这些方面尝试了许多组合,但要么只得到我需要的部分信息或错误。有任何想法吗?
答案 0 :(得分:0)
grep
可用于实际返回匹配而不是逻辑值:
lapply(species, grep, file.list, ignore.case=TRUE, value=TRUE)
#[[1]]
#[1] "blah_cod" "blah_cod"
#
#[[2]]
#[1] "blah_had"