我有一个列表,每个列表包含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似乎喜欢给我这些单身人士名单。
提前感谢您的帮助和耐心。
答案 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行。