【发布时间】:2014-11-12 19:14:11
【问题描述】:
我有一个包含 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 似乎很喜欢给我这些单例列表。
提前感谢您的帮助和耐心。
【问题讨论】:
-
尝试使用
t[[i]]而不是t[i]。 (并仔细阅读help("[")中关于"Recursive (list-like) objects"的部分,了解此设置中[和[[之间的区别。) -
谢谢!我想我理解其中的区别——我只是希望将对象转换为可以使用
[的对象。如果所有列表都是单例的,那么将其保留为当前形式是否会获得任何优势?这让我很困惑。 -
我的建议是,当您想要提取一个列表元素(而不是由该元素组成的长度为一的列表)的内容时,您只需学会使用
[[。 FTR,让[表现得如此的优势在于它允许您获取列表的任意子集(t[1:4]或t[1]或t[-5]或t[c(1,1,1,2,2)])。 -
我宁愿只有一个数据框列表。,但你确实有一个数据框列表...看看here 以获得一些有趣的信息关于列表
-
投票结束。这本质上是要求 R 成为一种不同的语言。