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

时间:2016-11-28 12:53:51

标签: r select dplyr conditional-statements

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

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

但它不起作用。

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

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

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

2 个答案:

答案 0 :(得分:7)

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

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

应该做的。

使用iris的虚拟示例:

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

答案 1 :(得分:7)

你可以用这个:

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

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

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