gpt4 book ai didi

r - 为什么 rbind() 和 do.call(rbind, ) 返回不同的结果?

转载 作者:行者123 更新时间:2023-12-04 00:06:15 26 4
gpt4 key购买 nike

我想使用以下代码将列表转换为数据框:

ls<-list(a=c(1:4),b=c(3:6))
do.call("rbind",ls)

添加do.call得到的结果如下图。它返回一个 data.frame对象。
 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)为您提供与 Reduce(rbind, ls) 相同的输出.后者效率较低,但它用于显示您如何迭代 ls 中的对象。而不是操纵 ls (这是 2 个列表的串联列表)。

它们都通过“取消列出”列表中的每个元素来操作,列表的类为 numeric .当您rbind数字参数,结果类是一个矩阵 typeof是整数。如果您只是 rbind列表,列表的每个元素都被认为是一个单一的对象。所以返回的对象是 matrix具有 1 行 2 列和条目类型为 list 的对象.它有 1 行应该表明它正在处理对象 ls作为一件事,而不是两件事。打字 rbind(ls, ls, ls)将给出 3 行和 2 列。

关于r - 为什么 rbind() 和 do.call(rbind, ) 返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35074200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com