簡體   English   中英

如何將列表列表轉換為列表數組?

[英]How to convert a list of lists to an array of lists?

我在R中有一個列表列表。我想將它轉換為列表數組,但我只得到一個列表列表數組:

r <- list(list(a=1, b=NULL, c=NULL, d=1.23),
          list(a=2, b=NULL, c=NULL, d=3.32),
          list(a=3, b=NULL, c=NULL, d=2.13),
          list(a=4, b=NULL, c=NULL, d=3.25),
          list(a=5, b=NULL, c=NULL, d=0.14),
          list(a=6, b=NULL, c=NULL, d=5.13))
x <- array(r, dim=c(3,2))
x[1,1] # now a list of length 1 containing an element which is a list with components a--d

如您所見, x[1,1] (例如)現在是列表列表,但“外部”列表是無用的。 我寧願有一個數組yy[i,j]x[i,j][[1]] 獲得此功能的最佳方式是什么(使用base-R中的函數(無附加軟件包))?

我試圖使用一些unlist() hackery像array(unlist(r, recursive=FALSE), dim=c(3,2)) ,但是失敗了。 sapply(r, FUN=I)至少給出一個矩陣......也許這有助於(?)

使用雙括號, x[[1,1]]

按設計你不能這樣做。

矢量元素是定義長度為1的向量,而數組/矩陣仍然是具有維度的向量。

列表本身是通用向量,因此它們可以是其他列表(或數組或矩陣)的元素,但前提是它們本身的長度為1。

順便說一下,這就是為什么使用[]選擇列表中包含的對象只返回包含對象的大小為1的列表,而不是使用[[]]需要獲取的實際對象。

所以答案是,真的沒有辦法擺脫“外部”清單。

有關詳細信息,請參閱R語言定義手冊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM