Используйте stringr для извлечения нескольких символьных строк из большой базы данных - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь извлечь несколько строк символов из большой базы данных.Я могу использовать фильтр (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 строку.Есть ли другой способ объединить или найти несколько терминов одновременно и вытянуть соответствующие строки?

Можно использовать str_detect пакета stringr, включенного в пакет tidyverse.str_detect возвращает True или False относительно того, содержит ли указанный вектор некоторую конкретную строку.Можно фильтровать, используя это логическое значение.См. Введение в stringr для получения подробной информации о пакете stringr.

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

Спасибо

...