आर

2012-09-17 10 views
35

में प्रीलोकेट सूची यह एक लूप में डेटा संरचना का विस्तार करने के लिए आर में अक्षम है। मैं एक निश्चित आकार के list को कैसे रोकूं? matrixncol और nrow तर्कों के माध्यम से यह आसान बनाता है। सूचियों में यह कैसे करता है? उदाहरण के लिए:आर

x <- list() 
for (i in 1:10) { 
    x[[i]] <- i 
} 

मुझे लगता है कि यह अक्षम है। ऐसा करने का एक बेहतर तरीका क्या है?

उत्तर

49

vector वांछित मोड और लंबाई के खाली वेक्टर बना सकते हैं।

x <- vector(mode = "list", length = 10) 
4

कुछ इस तरह:

x <- vector('list', 10) 

लेकिन lapply का उपयोग कर सबसे अच्छा विकल्प

19

क्या @Jilber कहा, lapply विशेष रूप से ऑपरेशन के इस प्रकार के लिए बनाया गया है पर विस्तार करने के लिए है।

पाश के लिए के बजाय

, आप इस्तेमाल कर सकते हैं:

x <- lapply(1:10, function(i) i) 

आप इस के लिए और अधिक जटिल उदाहरण विस्तार कर सकते हैं। अक्सर, लूप के शरीर में क्या होता है सीधे उस फ़ंक्शन में अनुवाद किया जा सकता है जो लूप के प्रत्येक पुनरावृत्ति से एक पंक्ति की तरह दिखने वाली एक पंक्ति को स्वीकार करता है।