2016-11-28 38 views
5

मैं fy से शुरू होने वाले सभी कॉलम चुनना चाहता हूं और dplyr का उपयोग कर समाप्त करना चाहता हूं। मैंने निम्नलिखित कोडएक ही वक्तव्य में एक ही समय में start_with और end_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

धन्यवाद:

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

@Vincent Bonhomme रूप में एक ही उदाहरण गयी। मैं रेगेक्स का प्रशंसक नहीं हूं लेकिन समाधान अच्छा है – Garp

+1

मैं या तो नहीं था। तब मैंने अपने व्याकरण को जानने के लिए कुछ समय समर्पित किया (धन्यवाद [इस] (http://regexr.com/)), यह मुझे वास्तविक जीवन का बेहतर आनंद लेने के लिए सप्ताह के कामों की तरह बचाता है, फिर मैं एक विशाल रेगेक्स प्रशंसक बन गया; -) –

+0

मुझे यह कोशिश करनी चाहिए :) वैसे भी, संसाधन – Garp

4

आप इस का उपयोग कर सकते हैं:

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

धन्यवाद के लिए धन्यवाद। मैं भूल गया कि ये सहायक एक सेट – Garp

+0

एनपी वापस सेट करते हैं, क्या आप उत्तर के रूप में चिह्नित कर सकते हैं? – cccmir

+0

मैंने किया, लेकिन यह कहा कि मुझे 5 मिनट के लिए इंतजार करना है – Garp

संबंधित मुद्दे