如何在R中列出列表?

时间:2012-05-27 19:46:52

标签: 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应该是一个列表!

5 个答案:

答案 0 :(得分:43)

您可以轻松制作列表清单

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

答案 1 :(得分:7)

使用你的例子::

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"

答案 2 :(得分:3)

如果您要保留listlist(类似于python的{​​{1}}),那么这可能会有效:

list.append()

答案 3 :(得分:1)

该示例在循环中创建一个命名列表的列表。

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

要添加另一个名为“ name3”的列表,请输入:

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

答案 4 :(得分:-1)

正如其他答案已经以更复杂的方式指出的那样,你已经已经创建了一个列表列表!它只是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"