我希望将列表转换为数据框,使用以下代码:
通过添加do.call获得的结果如下所示。它按照预期返回了一个对象。
ls<-list(a=c(1:4),b=c(3:6))
do.call("rbind",ls)
通过添加do.call获得的结果如下所示。它按照预期返回了一个对象。
do.call("rbind",ls)
[,1] [,2] [,3] [,4]
a 1 2 3 4
b 3 4 5 6
然而,如果我直接使用rbind
,它会返回一个列表。
为什么rbind
在这两种情况下的行为不同?
my.df<-rbind(ls)
str(ls)
my.df
a b
ls Integer,4 Integer,4
str(ls)
List of 2
$ a: int [1:4] 1 2 3 4
$ b: int [1:4] 3 4 5 6
do.call("rbind", ls)
返回的是一个矩阵,而不是数据框。rbind(ls)
同样如此。 - Rich Scrivendo.call
会将列表中的元素提取出来,这就是它与直接使用rbind(ls[[1]], ls[[2]])
的区别。 - David Arenburgrbind(ls)
的输出是一个矩阵,其中包含列表元素。可以查看class(rbind(ls))
。 - Rich Scriven?do.call
- alexwhitworth