R - подразумевает объект x в grep - PullRequest
0 голосов
/ 17 мая 2018

Я регулярно фильтрую символьные векторы, используя grep в индексе.Для этого я обычно повторяю имя индексированного объекта в индексе.

paths <- c("Resources/ctrl1.txt", "Resources/ctrl2.txt", 
           "Resources/trt1.txt", "Resources/trt2.txt")

paths.ctrl <- paths[grep("ctrl", paths)]

Мне было интересно, был ли способ подразумевать x (объект, в котором ищется шаблон), поэтому мне не нужно называть это явно снова.Это было бы особенно удобно, когда объект еще не назначен, и фильтрация происходит уже во время назначения.

Вместо:

dir <- "Resources/"
paths.ctrl <- paste0(dir, list.files(dir, recursive=T)[grep("ctrl", list.files(dir, recursive=T)))

Я хотел бы что-то вроде:

paths.ctrl <- paste0(dir, list.files(dir, recursive=T)[grep("ctrl", x)]

Я знаю, что могу использовать аргумент шаблона в случае list.files, но я затрагиваю эту проблему во всех контекстах и ​​задавался вопросом, было ли общее решение.

1 Ответ

0 голосов
/ 17 мая 2018

Возможно, вам понравится опция value = TRUE, как в

paths.ctrl <- paste0(dir, grep("ctrl", list.files(dir, recursive = TRUE), value = TRUE))

Например,

c("AA", "BB", "BA")[grep("B", c("AA", "BB", "BA"))]
# [1] "BB" "BA"

grep("B", c("AA", "BB", "BA"), value = TRUE) # no repetitions
# [1] "BB" "BA"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...