如何最好地删除额外的"层列表"在R?

时间:2014-11-12 19:14:11

标签: r list

我有一个列表,每个列表包含1个数据框,如下例所示:

> t
[[1]]
  y1 y2
1  1  4
2  2  5
3  3  6

[[2]]
  y1 y2
1  3  6
2  2  5
3  1  4

这当然给了我以下结果:

> class(t[1])
[1] "list"
> class(t[[1]])
[1] "data.frame"

也许我正在使用R错,但这让我很烦。我宁愿只有一个数据框列表。这样,我可以将每个引用为t[i],而不是笨重的t[[i]]。什么是将其转换为数据框列表的最佳方法?

我离这儿基地不远吗? R似乎喜欢给我这些单身人士名单。

提前感谢您的帮助和耐心。

1 个答案:

答案 0 :(得分:0)

您已经有了一个数据框列表,并且无法继续执行任何操作(除了将它们绑定到一行以生成单个数据框)。请尝试阅读the subsetting chapter in the Advanced R book

简而言之

R有3种主要子集方法,[[[$。它们的行为取决于您使用它们的对象。 (@比较少见,用于S4对象。)

一般来说,[子集返回您之前拥有的同一对象的子集。例如,(1:5)[4]从长度为5的向量返回长度为1的向量。 [[子集不一定返回对象的一部分,但可能与您拥有的类型相同。对于向量,它与[

相同

由于列表通常包含不同类型的对象,因此[[[之间的差异可能非常重要。 [子集为您提供仅包含指定元素的新列表,而[[则直接为您提供元素。请注意,数据框是列表。 iris[1]返回仅包含第一列的数据框。 iris[[1]]返回一个向量,即iris数据框中的第一个对象。

$仅仅是允许自动完成的[[的同义词。

对于某些对象,[[[之间的区别可能不明显。例如,iris[[c(1, 2)]]iris[2, 1]的作用相同。第一个似乎选择对象1,然后选择对象2.第二个选择第1列中的第2行。