2014-10-22 8 views
43

मैं एक पाश में एक सूची के तत्वों को जोड़ने के लिए करना चाहते हैं में एक सूची में तत्वों को जोड़ने के लिए (मैं वास्तव में कितने पता नहीं है)आर (पाश)

इस तरह

:

l <- list(); 
while(...) 
    l <- new_element(...); 

अंत में, l[1] मेरा पहला तत्व होगा, l[2] मेरा दूसरा और इसी तरह।

क्या आप जानते हैं कि कैसे आगे बढ़ना है?

+2

लूप के अंदर बढ़ती वस्तुओं (और 'while' loop का उपयोग करके) आर में अनुशंसित तकनीक नहीं है। तत्वों की संख्या क्या निर्धारित करती है? –

+0

शायद इस पोस्ट को देखने के लायक भी हो सकता है http://stackoverflow.com/questions/14455051/combine-lists-while-overriding-values-with-same-name-in-r – user20650

उत्तर

11

निम्नलिखित लूप में एक सूची में तत्व जोड़ता है।

l<-c() 
i=1 

while(i<100) { 

    b<-i 
    l<-c(l,b) 
    i=i+1 
} 
+3

'b <- i का उद्देश्य क्या है लूप में? –

+13

'while' लूप

+0

अच्छा बिंदु में बढ़ती वस्तुओं। मैं अधिक से अधिक दिखाना चाहता था जहां ओपी 'i' – Jason

67

आप अपने सूची c पाश अंदर का उपयोग कर के लिए जोड़ नहीं करना चाहिए, क्योंकि वह बहुत बहुत धीमी गति से कोड हो सकती है। असल में जब आप c(l, new_element) करते हैं, तो सूची की पूरी सामग्री कॉपी की जाती है। इसके बजाय, आपको इंडेक्स द्वारा सूची के तत्वों तक पहुंचने की आवश्यकता है। यदि आप जानते हैं कि आपकी सूची कितनी देर तक चल रही है, तो l <- vector("list", N) का उपयोग करके इसे इस आकार में शुरू करना सबसे अच्छा है। यदि आप नहीं करते हैं तो आप इसे कुछ बड़ी संख्या के बराबर लंबाई के लिए शुरू कर सकते हैं (उदाहरण के लिए यदि आपके पास पुनरावृत्तियों की संख्या पर ऊपरी सीमा है) और फिर लूप समाप्त होने के बाद नॉन-न्यूल तत्वों को चुनें। वैसे भी, बुनियादी मुद्दा यह है कि आप सूची तत्व का ट्रैक रखने और है कि जैसे

i <- 1 
while(...) { 
    l[[i]] <- new_element 
    i <- i + 1 
} 

पैट्रिक बर्न्स 'The R Inferno (अध्याय 2) पर एक नज़र का उपयोग कर अधिक जानकारी के लिए है जोड़ने के लिए एक सूचकांक होना चाहिए।