2011-10-12 12 views
15

में नाम नहीं है lm(bp~height+age, data=mydata) जैसे कुछ के बजाय मैं नाम से कॉलम निर्दिष्ट करना चाहता हूं, नाम नहीं।कॉलम संख्याओं का उपयोग एलएम()

मैं lm(mydata[[1]]~mydata[[2]]+mydata[[3]]) कोशिश की, लेकिन इस के साथ समस्या यह है कि, सज्जित मॉडल में, गुणांक mydata[[2]], mydata[[3]] आदि नाम हैं, जबकि मैं उन्हें चाहते हैं असली कॉलम नाम के लिए है।

शायद यह आपके केक नहीं होने और इसे खाने का मामला है, लेकिन अगर विशेषज्ञों की सलाह कर सकता था कि यह संभव है मैं आभारी

+1

यदि आप जो करने की कोशिश कर रहे हैं उसके लिए थोड़ा बड़ा संदर्भ देते हैं तो आपको बेहतर उत्तर मिल सकते हैं: "आप जिस समस्या को हल करने की कोशिश कर रहे हैं"? –

+0

आपकी टिप्पणी के लिए धन्यवाद। मेरे पास डेटाफ्रेम में बड़ी संख्या में कॉलम हैं। मैं चरणबद्ध चयन सहित विभिन्न तकनीकों का उपयोग करके इनमें से एक सबसेट का उपयोग कर एक रैखिक मॉडल फिट कर रहा हूं। अगर मैं एलएम() को कॉल करते समय कॉलम को नंबर से संदर्भित कर सकता हूं तो यह सुविधाजनक होगा, लेकिन यदि संभव हो तो मैं मॉडल को कॉलम नाम दिखाना चाहूंगा। –

+1

मैं नामों के आधार पर एक सूत्र को एक साथ पेस्ट करता हूं, जैसे: http://stackoverflow.com/questions/6877534/understanding-lm-and-environment/6878461#6878461 –

उत्तर

19
lm(
    as.formula(paste(colnames(mydata)[1], "~", 
     paste(colnames(mydata)[c(2, 3)], collapse = "+"), 
     sep = "" 
    )), 
    data=mydata 
) 

के बजाय c(2, 3) आप उपयोग कर सकते हैं कि आप कितने सूचकांक चाहते हो जाएगा (लूप के लिए कोई ज़रूरत नहीं है)।

+1

तीसरी पंक्ति के अंत में एक अल्पविराम गायब है? –

+0

धन्यवाद, @ बेन। इसके अलावा, शायद 'as.formula' का उपयोग करना अधिक मजबूत होगा, हालांकि 'lm()' (लेकिन अन्य मॉडलों के लिए) के लिए आवश्यक नहीं है। – TMS

+0

धन्यवाद। यह बताता है कि बेन बोल्कर ने पहले क्या सुझाव दिया था, और पूरी तरह से काम करता है। –

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