我需要在多个表达式中动态选择变量。考虑以下示例:
library(tidyverse)
set.seed(42)
df <- tibble(
grey_dog = runif(n = 69),
white_bear = runif(n = 69),
blue_oyster = runif(n = 69),
white_lobster = runif(n = 69),
green_dog = runif(n = 69)
)
df %>%
dplyr::select(
(contains("dog") & contains("green")) |
(contains("white") & contains("bear"))
)
不是明确地进行选择,而是使用包含我想要基于其进行选择的信息的向量:
x <- c(green = "dog", white = "bear")
我希望拼接一个字符串,用作整洁选择的条件:
s <- paste0("(", paste0("contains(", names(x),") & contains(", x, ")"), ")", collapse = " | ")
dplyr::select(df, s)
这将导致以下错误:
Error: Can't subset columns that don't exist.
x Column `(contains(green) & contains(dog)) | (contains(white) & contains(bear))` doesn't exist.
Run `rlang::last_error()` to see where the error occurred.
有任何关于如何完成这个的想法吗?