通过 select 语句传递向量

Passing a vector through a select statement

寻求帮助以找到将字符串向量传递到 select 语句的方法。我想对数据框进行子集化以仅输出包含与我的向量相同的字符串的变量。我不希望它完全匹配,因此需要传递像 contains 这样的函数,因为我在数据框变量中有一些文本我的向量中没有。

这是我要传递到我的 select 语句中的向量的示例。

c("clrs_name", "_clrs_sitedetails_value", "_clrs_targetlicence_value", 
"clrs_licenceclass", "clrs_licenceownership", "clrs_type", "statuscode")

例如,我想从我的数据框中提取变量 "odate_value_clrs_name",vector 中的字符串 "clrs_name" 应该提取它,但我不确定如何将 contains 和 vector 合并到select 语句。

我们可以在 select 中使用 matchescollapse 使用 | 通过 paste 来自 base Rstr_c(如果有任何 NA,str_c 也会 return NA)。如果其中一个模式丢失或与列名称不匹配,这不会 return 任何错误或警告

library(dplyr)
library(stringr)
df1 %>%
     select(matches(str_c(v1, collapse = "|")))

其中

v1 <- c("clrs_name", "_clrs_sitedetails_value", "_clrs_targetlicence_value", 
  "clrs_licenceclass", "clrs_licenceownership", "clrs_type", "statuscode")