使用Stringr从大型数据库中提取多个字符串

时间:2018-12-17 02:44:21

标签: r filter dplyr large-data stringr

我正在尝试从大型数据库中提取多个字符串。我可以使用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

示例输出数据:

Blockquote

谢谢

0 个答案:

没有答案