基本問題:在R中,如何創建列表,然後使用向量元素填充它?如何在R中創建整數向量列表
l <- list()
l[1] <- c(1,2,3)
這給出了錯誤「要替換的項目數不是替換長度的倍數」,所以R試圖解壓向量。我發現迄今爲止工作的唯一方法是在製作列表時添加矢量。
l <- list(c(1,2,3), c(4,5,6))
基本問題:在R中,如何創建列表,然後使用向量元素填充它?如何在R中創建整數向量列表
l <- list()
l[1] <- c(1,2,3)
這給出了錯誤「要替換的項目數不是替換長度的倍數」,所以R試圖解壓向量。我發現迄今爲止工作的唯一方法是在製作列表時添加矢量。
l <- list(c(1,2,3), c(4,5,6))
根據?"["
(下節「遞歸(列表等)對象」):
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
使用[[1]]
在
l[[1]] <- c(1,2,3)
l[[2]] <- 1:4
等。還記得,預分配更加有效,所以如果你知道你的名單多久將是,使用類似
l <- vector(mode="list", length=N)