如何在一个select语句中同时使用starts_with和ends_with?

问题描述 投票:0回答:3

我想使用

fy
选择以
giving
开头并以
dplyr
结尾的所有列。我尝试了以下代码

df %>% select(start_with('fy') & ends_with('giving')

但是没有成功。

p/s:实际上我可以用以下块来破解它

df %>% select(starts_with('fy')) %>% select(ends_with('giving'))

但我还是想把这两个条件都放在一处

r select dplyr conditional-statements
3个回答
21
投票

你可以使用这个:

df %>% select(intersect(starts_with('fy') , ends_with('giving')))

添加了与@Vincent Bonhomme相同的示例:

iris %>% select(intersect(starts_with("Pet"), ends_with("gth"))) %>% colnames
#[1] "Petal.Length"

11
投票

您可以尝试使用

matches
代替正则表达式:

 df %>% select(matches("^fy.*giving$"))

应该完成这项工作。

使用

iris
的虚拟示例:

iris %>% select(matches("^Pet.*gth$")) %>% colnames
[1] "Petal.Length"

0
投票

这也有效(提取以

Pe
开头并以
Length
结尾的变量):

iris %>% 
  select_at(vars(starts_with("Pe") & ends_with("Length")))
#     Petal.Length
# 1            1.4
# 2            1.4
# 3            1.3
# 4            1.5
© www.soinside.com 2019 - 2024. All rights reserved.