2013-10-12 10 views
6

के साथ सूची वस्तु घोषित करने के लिए मैं एम 3 द्वारा 3 मैट्रिक्स वाली एक सूची घोषित करना चाहता हूं। अगर मैं पहले से नंबर एम जानता था, तो मैं इस तरह के सूची से घोषणा कर सकते हैं:आर: एम तत्वों

elm <- matrix(NA,3,3) 
## Say M = 7 
myList <- list(elm,elm,elm,elm,elm,elm,elm) 

इस विधि बोझिल हो जाता है एम बड़ी है। इससे भी बदतर यह तरीका काम नहीं करता है अगर मुझे पहले से एम के मूल्य को नहीं पता है। मैं लंबाई एम का एक वेक्टर घोषित करने के लिए चाहते हैं, तो मैं इसे बुला द्वारा कर सकते हैं:

myVec <- rep(NA,M) 

भले ही मैं पहले से एम के मूल्य पता नहीं है। क्या आकार एम की सूची घोषित करने का कोई ही तरीका है?

आप

उत्तर

5

mylist <- rep(list(elm),7) 

प्रयास करें जो, एस = 3 के लिए, देता है

[[1]] 
    [,1] [,2] [,3] 
[1,] NA NA NA 
[2,] NA NA NA 
[3,] NA NA NA 

[[2]] 
    [,1] [,2] [,3] 
[1,] NA NA NA 
[2,] NA NA NA 
[3,] NA NA NA 

[[3]] 
    [,1] [,2] [,3] 
[1,] NA NA NA 
[2,] NA NA NA 
[3,] NA NA NA 

वैसे, identical(matrix(NA,3,3),matrix(,3,3)) सत्य है, क्योंकि डिफ़ॉल्ट रूप से matrices को NA पर प्रारंभ किया गया है। ?matrix देखें।

+1

यदि आपकी matrices समान नहीं हैं, तो alexis_laz का उत्तर अधिक उपयोगी होगा: (1) सही लंबाई की एक सूची आरंभ करें और फिर (2) इसे 'mylist [[i]] 'के साथ असाइन करें। – Frank

+1

धन्यवाद! मुझे यही चाहिए था! – ThePrincess

12

धन्यवाद हो सकता है कि यह:

myls <- vector("list", length = S)

+0

आकार एस की एक सूची घोषित करना अच्छा है लेकिन मैं एस 3 से 3 मैट्रिक्स वाली एक सूची घोषित करना चाहता हूं ताकि बाद में मेरे कोड में मैं i (th, k) th^द्वारा सूची के 3 मैट्रिक्स द्वारा: myls [[i]] [j, k] – ThePrincess

+0

'के लिए प्रयास करें (i में 1: लंबाई (myls)) {myls [[i]] <- elm}; myls' –