我正在尝试从大型数据库中提取多个字符串。我可以使用filter(str_detect ....)查找执行单个搜索。
file_list <- list.files(file_location, pattern="*.GVH.gff3", full.names=TRUE)
#start for loop to read in files
for (i in seq_along(file_list)){
file_name <- read.delim(file_list[i])
file_name %>%
filter(str_detect(file_name$X17mers, "(S*|L*)LAVAQDLT")) %>%
write.csv(file=paste("miHA_", basename(file_list[i]), sep=''))
我在下面的堆栈交换中找到了答案(感谢Keiku),但是我已经在使用(|)函数,并且无法搜索> 1个字符串。是否有另一种方法可以同时连接或搜索多个术语并提取相应的行?
可以使用tidyverse软件包中包含的stringr软件包的str_detect。关于指定的向量是否包含某些特定的字符串,str_detect返回True或False。可以使用此布尔值进行过滤。有关Stringer软件包的详细信息,请参见Stringer简介。
mtcars$type <- rownames(mtcars) mtcars %>% filter(str_detect(type, 'Toyota|Mazda'))
# mpg cyl disp hp drat wt qsec vs am gear carb type
# 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4
# 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag
# 3 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corolla
# 4 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 Toyota Corona
示例输出数据:
谢谢