2016-11-28 16 views
5

Tôi muốn chọn tất cả các cột bắt đầu bằng fy và kết thúc bằng giving sử dụng dplyr. Tôi đã thử mã sau đâyLàm thế nào để sử dụng cả start_with và ends_with cùng một lúc trong một câu lệnh select?

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

nhưng nó không hoạt động.

p/s: thực sự tôi có thể hack nó với đoạn sau

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

Nhưng tôi vẫn muốn đưa tất cả hai điều kiện ở một nơi

Trả lời

4

Bạn có thể thử sử dụng matches thay vì với một thường xuyên biểu thức:

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

nên thực hiện công việc.

Một ví dụ giả sử dụng iris:

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

nhờ. Tôi không phải là một fan hâm mộ của regex nhưng giải pháp là tốt – Garp

+1

Tôi đã không được. Sau đó, tôi dành một chút thời gian để học ngữ pháp của mình (nhờ [this] (http://regexr.com/)), nó đã cứu tôi như những tuần làm việc để tận hưởng cuộc sống thực, sau đó tôi trở thành một fan hâm mộ regex khổng lồ;) –

+0

có thể là tôi nên dùng thử :) anyways, cảm ơn vì tài nguyên – Garp

4

bạn có thể sử dụng này:

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

thêm cùng ví dụ như @Vincent Bonhomme:

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

cảm ơn. Tôi quên rằng những người giúp đỡ trả lại một tập hợp – Garp

+0

np, bạn có thể đánh dấu là câu trả lời? – cccmir

+0

Tôi đã làm, nhưng nó nói rằng tôi phải đợi 5 phút – Garp

Các vấn đề liên quan