Я хочу select
столбцы фрейма данных, которые имеют определенный шаблон в начале и конце своих имен и одно из нескольких возможных значений в середине. Это то, что работает, но я считаю, что двойное использование intersect
не очень элегантно.
df <- data.frame(var1_one_num = sample(1:10, 10, replace = TRUE),
var1_two_num = sample(1:10, 10, replace = TRUE),
var1_three_num = sample(1:10, 10, replace = TRUE),
var1_four_num = sample(1:10, 10, replace = TRUE),
var2_one_num = sample(1:10, 10, replace = TRUE),
var1_one_fac = sample(1:10, 10, replace = TRUE))
var_middle <- c("one|two|three")
df %>% select(intersect(starts_with("var1_"),
intersect(matches(var_middle),
ends_with("_num")))) %>% names()
[1] "var1_one_num" "var1_two_num" "var1_three_num"
Я подозреваю, что есть более умный способ с any of
или подобным, но я не мог обойти это.