2013-10-12 12 views
6

M 3 ile 3 matris içeren bir listeyi bildirmek istiyorum. önceden numara M bilseydim, o zaman ben böyle listeyi ilan edebilir: M büyükse bu yöntem hantal haleR: Liste nesnesini M öğeleriyle bildirme

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

. Daha da kötüsü, M'nin değerini önceden bilmezsem bu yöntem işe yaramaz. Ben M uzunluğunda bir vektör bildirmek istiyorsanız, ben arayarak yapabilirsiniz:

myVec <- rep(NA,M) 

önceden M değerini bilmek bile. M büyüklüğünde bir liste ilan etmek için benzer bir yolu var mı?

Belki bu size,

cevap

5

S = 3 için, arada

[[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 

veren

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

deneyin 0 Matrisler varsayılan olarak NA olarak başlatıldığı içindoğrudur. Bkz ?matrix.

+1

Matrisleriniz aynı değilse, alexis_laz'ın cevabı daha faydalı olacaktır: (1) doğru uzunlukta bir listeyi başlatınız ve sonra (2) 'mylist [[i]] 'ile atayabilirsiniz. – Frank

+1

Teşekkürler! İstediğim buydu! – ThePrincess

12

ederiz:

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

+0

Bu S büyüklüğünde bir liste bildirmek için iyidir. Ama ben S 3 by 3 matris içeren bir liste bildirmek istiyorum, böylece daha sonra kodumda i^th bir (j, k) th öğesini çağırabilir Listenin 3 x 3 matrisi ile: myls [[i]] [j, k] – ThePrincess

+0

'i deneyin (i: 1: uzunluk (miller)) {myls [[i]] <- elm}; myls' –