现在我使用这行代码:
df <- df1 %>% dplyr:: select(grep("x", names(df1)), grep("y", names(df1)), grep("z", names(df1)))
我无法找到一种方法来做到这一点,而不重复grep。最好是给grep提供一个列表,或者创建一个无需复制和调整grep行的代码。是否有更好的方法来过滤包含字符串部分的列名上的数据框?
e0bqpujr1#
您可以在select中使用matches,并使用一个正则表达式,其中包含由|分隔的潜在匹配项。这意味着您现有的代码应该等效于
select
matches
|
df <- df1 %>% select(matches('x|y|z'))
例如,如果df1为:
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
1条答案
按热度按时间e0bqpujr1#
您可以在
select
中使用matches
,并使用一个正则表达式,其中包含由|
分隔的潜在匹配项。这意味着您现有的代码应该等效于
例如,如果
df1
为:然后我们可以通过执行以下操作来选择名称包含x、y或z的列:
创建于2023-09-19带有reprex v2.0.2