2016-11-28 4 views
5

Я хочу выбрать все столбцы, начиная с fy и заканчивая giving, используя dplyr. Я пробовал следующий кодКак использовать оба параметра start_with и ends_with в одно и то же время в одном заявлении выбора?

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

но это не сработало.

р/с: на самом деле я могу взломать его с помощью следующего фрагмента

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

Но я все еще хочу, чтобы поставить все два условия в одном месте

ответ

4

Вы можете попробовать использовать matches вместо этого с регулярным выражение:

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

должен выполнить эту работу.

фиктивный пример использования iris:

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

спасибо. Я не поклонник регулярных выражений, но решение хорошее – Garp

+1

Я тоже не был. Затем я посвятил некоторое время изучению его грамматики (благодаря [this] (http://regexr.com/)), он спас меня, как недели работы, чтобы лучше наслаждаться реальной жизнью, затем я превратился в огромного поклонника регулярных выражений,) –

+0

Может быть, я должен дать ему попробовать :) в любом случае, спасибо за ресурс – Garp

4

вы можете использовать это:

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

добавил тот же самый пример, как @Vincent Боном:

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

спасибо. Я забыл, что эти помощники возвращают набор – Garp

+0

np, можете ли вы отметить как ответ? – cccmir

+0

Я сделал, но он сказал, что я должен ждать 5 минут – Garp