R语言 如何创建一个简单的查询来使用列名的一部分为不同的列筛选数据框

62lalag4  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(102)

现在我使用这行代码:

df <- df1 %>% dplyr:: select(grep("x", names(df1)), grep("y", names(df1)), grep("z", names(df1)))

我无法找到一种方法来做到这一点,而不重复grep。最好是给grep提供一个列表,或者创建一个无需复制和调整grep行的代码。是否有更好的方法来过滤包含字符串部分的列名上的数据框?

e0bqpujr

e0bqpujr1#

您可以在select中使用matches,并使用一个正则表达式,其中包含由|分隔的潜在匹配项。
这意味着您现有的代码应该等效于

df <- df1 %>% select(matches('x|y|z'))

例如,如果df1为:

df1 <- data.frame(box = 1, yak = 2, lazy = 3, lab = 4, men = 5)

然后我们可以通过执行以下操作来选择名称包含x、y或z的列:

df1 %>%
  select(matches('x|y|z'))
#>   box yak lazy
#> 1   1   2    3

创建于2023-09-19带有reprex v2.0.2

相关问题