2011-11-02 20 views
8

के रूप में एक स्ट्रिंग को पास कर रहा है मेरे पास डेटा 1 डी नामक डेटा फ्रेम है जिसे विभिन्न कॉलम के साथ col1, col2, col3 .... col15 कहते हैं। डेटा फ्रेम में एक विशिष्ट श्रेणी विशेषता नहीं होती है लेकिन किसी भी विशेषता को क्लास चर के रूप में संभावित रूप से उपयोग किया जा सकता है।डेटा फ्रेम कॉलम नाम

target<-data.df$col3 

और उसके बाद (जैसे भाग और J48 के रूप में कई शिक्षार्थियों के लिए उस क्षेत्र (लक्ष्य) इनपुट के रूप में उपयोग करें: मैं इस प्रकार एक अनुसंधान चर लक्ष्य जो स्तंभ संख्या वर्ग के रूप में इलाज किया जाना है के लिए अंक कहा जाता है का उपयोग करना चाहेंगे पैकेज RWeka) से:

part<-PART(target~.,data=data.df,control=Weka_control(M=200,R=FALSE)) 
j48<-J48(target~.,data=data.df,control=Weka_control(M=200,R=FALSE)) 

विचार 'लक्ष्य' केवल एक बार मेरी आर कोड की शुरुआत में परिवर्तित करने के लिए सक्षम होने के लिए है। यह कैसे किया जा सकता है?

+0

यदि आप करना चाहते हैं तो 'data.df $ col3' के बजाय' col3' को कॉल करने में सक्षम हो, आप 'attach (data.df) 'कर सकते हैं। लेकिन फिर, आपको अपने डेटा के साथ किए जाने पर 'detach()' का उपयोग करने के लिए सावधान रहना चाहिए। और यदि आप एक से अधिक डेटाफ्रेम का उपयोग एक बार में करते हैं, तो यह भ्रमित हो सकता है और त्रुटि प्रवण हो सकती है यदि आपने चर नामों को दोहराया है। –

+0

एंटोनी, मैंने पढ़ा है कि संलग्नक() का उपयोग करना एक अच्छा अभ्यास नहीं है। क्या आप 'भीतर' के साथ एक उदाहरण प्रदान कर सकते हैं। मैंने इसके बारे में पढ़ा है लेकिन आर –

+0

के अपने वर्तमान ज्ञान पर ज्यादा समझ नहीं आता है, धन्यवाद, मैंने यही किया है। –

उत्तर

6

यदि आप आर में references का उपयोग करने के बारे में पूछते हैं, तो यह असंभव है।

हालांकि, अगर आप नाम नहीं स्पष्ट रूप से दिए गए द्वारा एक स्तंभ करने के बारे में पूछते हैं, यह संभव [ ऑपरेटर के साथ है, इस तरह:

theNameOfColumnIwantToGetSummaryOf<-"col3" 
summary(data.df[,theNameOfColumnIwantToGetSummaryOf]) 

... या ऐसा:

myIndexOfTheColumnIwantToGetSummaryOf<-3 
summary(data.df[,sprintf("col%d",myIndexOfTheColumnIwantToGetSummaryOf)]) 
+0

का संभावित डुप्लिकेट एकाधिक कॉलम के बारे में क्या है? मुझे पता है कि आप 'डीएफ [, colName]' के साथ क्या कर सकते हैं, लेकिन कोई भी अंक और नामों को कैसे मिला/मिलान कर सकता है।उदाहरण: 'डीएफ [, सी (1,2,4)] 'जहां कॉल 4 का नाम" colName "है। कोई व्यक्ति डीएफ [, सी (1,2, "colName")] कैसे कर सकता है? यह एक लूप में सहायक होगा जो मैं लिखने की कोशिश कर रहा हूं। – Hendy

+0

@Hendy आप नाम और संख्या मिश्रण नहीं कर सकते हैं; फिर भी आप दो सबस्क्रिप्ट्स ('cbind (df [, c (1,2)], df [, c ("colName")]) के परिणामों को बाध्य कर सकते हैं या '' मिलान' के साथ नामों को नामों में परिवर्तित कर सकते हैं (जैसे 'मिलान (सी ("colName", "colName2"), नाम (डीएफ)) 'और संख्यात्मक सूचकांक के साथ परिणाम मिलाएं। – mbq

+0

@ हेन्डी वैसे भी, मुझे एक अजीब लग रहा है कि आप जो भी चाहते हैं उसे करने में आप बहुत मेहनत कर रहे हैं; क्यों क्या आप पूरे लूप के बारे में क्यू नहीं पूछेंगे? – mbq

9

मैं कभी-कभी कॉलम को संदर्भित करने के लिए तारों का उपयोग करके बहुत कुछ हासिल करता हूं। यह इस तरह से काम करता है:

> df <- data.frame(numbers=seq(5)) 
> df 
    numbers 
1  1 
2  2 
3  3 
4  4 
5  5 
> df$numbers 
[1] 1 2 3 4 5 
> df[['numbers']] 
[1] 1 2 3 4 5 

फिर आप कर सकते हैं एक चर target स्ट्रिंग के रूप अपने वांछित स्तंभ का नाम हो। मुझे RWeka के बारे में पता नहीं है, लेकिन ggplot जैसे कई पुस्तकालय कॉलम के लिए स्ट्रिंग संदर्भ ले सकते हैं (उदा। aes के बजाय aes_string पैरामीटर)।

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