2011-04-27 39 views
25

基本問題:在R中,如何創建列表,然後使用向量元素填充它?如何在R中創建整數向量列表

l <- list() 
l[1] <- c(1,2,3) 

這給出了錯誤「要替換的項目數不是替換長度的倍數」,所以R試圖解壓向量。我發現迄今爲止工作的唯一方法是在製作列表時添加矢量。

l <- list(c(1,2,3), c(4,5,6)) 

回答

31

根據?"["(下節「遞歸(列表等)對象」):

Indexing by ‘[’ is similar to atomic vectors and selects a list of 
the specified element(s). 

Both ‘[[’ and ‘$’ select a single element of the list. The main 
difference is that ‘$’ does not allow computed indices, whereas 
‘[[’ does. ‘x$name’ is equivalent to ‘x[["name", exact = 
FALSE]]’. Also, the partial matching behavior of ‘[[’ can be 
controlled using the ‘exact’ argument. 

基本上,對於列表,[選擇一個以上的元素,因此在更換必須是一個列表(不是一個向量作爲在你的例子)。下面是如何在列表使用[一個例子:

l <- list(c(1,2,3), c(4,5,6)) 
l[1] <- list(1:2) 
l[1:2] <- list(1:3,4:5) 

如果你只是想更換一個元素,使用[[代替。

l[[1]] <- 1:3 
25

使用[[1]]

l[[1]] <- c(1,2,3) 
l[[2]] <- 1:4 

等。還記得,預分配更加有效,所以如果你知道你的名單多久將是,使用類似

l <- vector(mode="list", length=N)