簡體   English   中英

如何在R中列出列表?

[英]How can I make a list of lists in R?

我不知道如何在R中列出列表。我有幾個列表,我想將它們存儲在一個數據結構中,以便更容易地訪問它們。 但是,看起來你不能在R中使用列表列表,所以如果我從另一個列表中獲取列表l1,比如說l2那么我就無法訪問元素l1。 我該如何實現它?

編輯 -我將展示一個對我不起作用的例子:

list1 <- list()
list1[1] = 1
list1[2] = 2
list2 <- list()
list2[1] = 'a'
list2[2] = 'b'
list_all <- list(list1, list2)
a = list_all[1]
a[2]
#[[1]]
#NULL

但是a應該是一個列表!

您可以輕松制作列表列表

list1 <- list(a = 2, b = 3)
list2 <- list(c = "a", d = "b")
mylist <- list(list1, list2)

mylist現在是一個包含兩個列表的列表。 要訪問list1,您可以使用mylist[[1]] 如果你想能夠像mylist$list1這樣的東西,那么你需要做類似的事情

mylist <- list(list1 = list1, list2 = list2)
# Now you can do the following
mylist$list1

編輯:回復您的編輯。 只需使用雙括號索引

a <- list_all[[1]]
a[[1]]
#[1] 1
a[[2]]
#[1] 2

用你的例子::

list1 <- list()
list1[1] = 1
list1[2] = 2
list2 <- list()
list2[1] = 'a'
list2[2] = 'b'
list_all <- list(list1, list2)

使用'[['檢索列表的元素:

b = list_all[[1]]
 b
[[1]]
[1] 1

[[2]]
[1] 2

class(b)
[1] "list"

如果你想保留一個list list (類似於pythonlist.append() ),那么這可能有效:

a <- list(1,2,3)
b <- list(4,5,6)
c <- append(list(a), list(b))

> c
[[1]]
[[1]][[1]]
[1] 1

[[1]][[2]]
[1] 2

[[1]][[3]]
[1] 3


[[2]]
[[2]][[1]]
[1] 4

[[2]][[2]]
[1] 5

[[2]][[3]]
[1] 6

該示例在循環中創建命名列表的列表。

  MyList <- list()
  for (aName in c("name1", "name2")){
    MyList[[aName]] <- list(aName)
  }
  MyList[["name1"]]
  MyList[["name2"]]

要添加另一個名為“name3”的列表,請執行以下操作:

  MyList$name3 <- list(1, 2, 3)

正如其他答案已經以更復雜的方式指出的那樣,你已經創建了一個列表列表! 這只是R的奇怪輸出混淆了(每個人?)。 試試這個:

> str(list_all)
List of 2
 $ :List of 2
  ..$ : num 1
  ..$ : num 2
 $ :List of 2
  ..$ : chr "a"
  ..$ : chr "b"

最簡單的結構是這樣的:

> str(list(list(1, 2), list("a", "b")))
List of 2
 $ :List of 2
  ..$ : num 1
  ..$ : num 2
 $ :List of 2
  ..$ : chr "a"
  ..$ : chr "b"

暫無
暫無

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

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