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

Gar*_*arp 9 select r conditional-statements dplyr

我想选择所有以开头为fy结尾的列并以结尾方式giving使用dplyr.我尝试了以下代码

df %>% select(start_with('fy') & ends_with('giving')
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

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

df %>% select(starts_with('fy')) %>% select(ends_with('giving'))
Run Code Online (Sandbox Code Playgroud)

但我仍然希望将所有这两个条件放在一个地方

Vin*_*mme 8

您可以尝试使用matches正则表达式:

 df %>% select(matches("^fy.*giving$"))
Run Code Online (Sandbox Code Playgroud)

应该做的工作.

一个虚拟的例子iris:

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


小智 8

你可以用这个:

df %>% select(intersect(starts_with('fy') , ends_with('giving')))
Run Code Online (Sandbox Code Playgroud)

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

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