Выборочные данныеR - Найти все векторные элементы, которые содержат все строки/шаблоны - str_detect Grep
files.in.path = c("a.4.0. name 2015 - NY.RDS",
"b.4.0. name 2016 - CA.RDS",
"c.4.0. name 2015 - PA.RDS")
strings.to.find = c("4.0", "PA")
Я хочу, чтобы логический вектор, который содержит все элементы, которые содержат все strings.to.find
. Результат хотел:
FALSE FALSE TRUE
Этот код будет найти элементы, которые содержат какой-либо один из strings.to.find
, т.е. использует оператор ИЛИ
str_detect(files.in.path, str_c(strings.to.find, collapse="|")) # OR operator
TRUE TRUE TRUE
Этот код пытается использовать оператор И, но не работает.
str_detect(files.in.path, str_c(strings.to.find, collapse="&")) # AND operator
FALSE FALSE FALSE
Это работает в нескольких строках, и я могу написать for
цикл, который будет генерировать все отдельные линии для случаев с большим числом strings.to.find
det.1 = str_detect(files.in.path, "4.0" )
det.2 = str_detect(files.in.path, "PA" )
det.all = det.1 & det.2
FALSE FALSE TRUE
Но есть лучший способ, который не связаны с использованием регулярного выражения, которые зависят от положения или порядка strings.to.find
.
@Jota; хорошая точка зрения. Например, 'grepl (" 4.0 "," 4 0 ")', поэтому, возможно, мы сможем избежать этого 'grepl (" 4 \\. 0 "," 4 0 ")' – user2957945