2014-05-18 10 views
5

का उपयोग कर डेटा फ्रेम कॉलम का चयन करने के लिए स्ट्रिंग वैरिएबल का उपयोग कैसे करें I पढ़ने के साथ मैं आर के साथ कर रहा हूं, मैं इनमें से किसी भी तरीके से डेटा फ्रेम में एक कॉलम का चयन कर सकता हूं: फ्रेम [, कॉलम] या फ्रेम $ स्तंभ। हालांकि, जब मेरे पास एक चर के रूप में एक स्ट्रिंग है, तो यह केवल पहले में काम करता है। दूसरे शब्दों में, निम्न पर विचार करें:

मेरे पास डेटा प्रतिक्रिया, tmp, प्रश्न प्रतिक्रियाओं के एक बड़े डेटा फ्रेम का सबसेट है।

  V1 Q5.3 
2 R_bdyKkzWcvBxDFTT 1 
3 R_41wnKUQcM8mUW2x 0 
4 R_2ogeykkgbH2e4RL 1 
5 R_8D4jzMBfYO0M0ux 1 
6 R_3KPgP2pxWROnip7 1 

str(tmp) 

'data.frame': 5 obs. of 2 variables: 
    $ V1 : Factor w/ 364 levels "R_0039orNoOoWaDQx",..: 256 116 70 201 95 
    $ Q5.3: num 1 0 1 1 1 

अब, मैं एक चर x, कि स्तंभों में से एक के नाम की स्ट्रिंग धारण परिभाषित: V1 प्रत्युत्तर की आईडी, Q5.3 प्रतिक्रिया, एक 1 या 0 है।

x<-"Q5.3" 

tmp [एक्स] रिटर्न मैं क्या लगता है कि यह वापसी करना चाहिए:

tmp[,x] 

[1] 1 0 1 1 1 

tmp $ "Q5.3" रिटर्न मैं क्या लगता है कि यह वापसी करना चाहिए:

tmp$"Q5.3" 

[1] 1 0 1 1 1 

tmp $ x हालांकि

tmp$x 

NULL 

मैं व्याख्या करने के लिए आर कैसे कह सकता हूं tmp $ x tmp $ "Q5.3" के रूप में।

उत्तर

14

आप tmp, tmp[,x] या tmp[[x]] में एक स्तंभ नाम के साथ एक चर x है, तो उसे निकालने के लिए सही तरीका है। आप tmp$xtmp$"Q5.3" के रूप में इलाज के लिए आर नहीं प्राप्त कर सकते हैं। tmp$x हमेशा "x" नामक आइटम को "tmp" में संदर्भित करेगा।

+0

बमर। धन्यवाद। मैं कोशिश करूँगा, तो। :-) –

+0

यह एक डुप्ली होना चाहिए ... –

+0

@ बेनबॉल्कर मैं इस सवाल के लिए कभी भी एक अच्छा डुप्ली नहीं पा सकता हूं, भले ही यह अक्सर soooooo आता है। मैं एक शुरू करने की सोच रहा था। "Data.frames के साथ काम करते समय $, [], और [[]] के बीच क्या अंतर है?" – MrFlick

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