2015-11-25 3 views
5

मेरे पास कई कॉलम के साथ एक डेटा सेट है, मुझे उनमें से एक हिस्सा चुनना है और कभी-कभी विश्लेषण करने के लिए उनका नाम बदलना है। फिलहाल मैं पैकेज dplyr से select का उपयोग करता हूं। लेकिन यह कई विशेषताओं के लिए हर बार सेटिंग करने के लिए जटिल था। क्या ऐसा करने के लिए बेहतर तरीके हैं?मैं आर में डेटा फ्रेम से कॉलम की एक लंबी सूची का चयन और नाम कैसे बदल सकता हूं?

उदाहरण के लिए, मैं डेटा सेट mtcars

> head(mtcars) 
        mpg cyl disp hp drat wt qsec vs am gear carb 
Mazda RX4   21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 
Mazda RX4 Wag  21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 
Datsun 710  22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 
Valiant   18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 

का उपयोग मैं स्तंभों का चयन करना चाहते हैं: mpg, cyl, और उन्हें x के रूप में नाम बदलने, y

फिलहाल मैं का उपयोग करें:

> df <- mtcars %>% select(x=mpg, y=cyl) 
> head(df) 
        x y 
Mazda RX4   21.0 6 
Mazda RX4 Wag  21.0 6 
Datsun 710  22.8 4 
Hornet 4 Drive 21.4 6 
Hornet Sportabout 18.7 8 
Valiant   18.1 6 

यह काम करता है, लेकिन यह बोझिल है जब मैं अक्सर टी में पैरामीटर बदलता हूं वह संश्लेषण। मैं समस्या को हल करने के लिए एक सूची का उपयोग करना चाहता हूं, लेकिन यह काम नहीं करता है।

myselection <- c(
    x = mpg, 
    y = cyl 
) 

df <- mtcars %>% select(myselection) # It is wrong! 

लेकिन यह गलत है, मैं कैसे यह काम कर सकते हैं:

उदाहरण मैं इसे आसान बनाने के लिए एक गुण सूची तैयार करना चाहते के लिए

?

+3

आप कर सकते थे 'myselection <- c (x = "mpg", y = "cyl") करें; सेटनाम (mtcars [myselection], नाम (myselection)) 'शायद –

+3

या' myselection <- list (mtcars, x = 'mpg', y = 'cyl'); do.call (select_, myselection) ' –

+0

@ डेविड एडनबर्ग; आपको इसे एक उत्तर के रूप में पोस्ट करना चाहिए, इसका इरादा स्पष्ट है – user20650

उत्तर

7

आप गैर मानक evalation चाहते हैं (अच्छी तरह से तकनीकी रूप से, इस मानक मूल्यांकन, और सामान्य dplyr उपयोग किया जाता है एनएसई है), vignette("nse") देखें:

library(dplyr) 

dots <- list(x="mpg", y="cyl") 
select_(mtcars, .dots = dots) 
5

एक आधार आर विकल्प हो सकता है

myselection <- c(x = "mpg", y = "cyl") 
setNames(mtcars[myselection], names(myselection)) 
संबंधित मुद्दे