为什么rbind(c(1,2,3),c(4,5,6))与Reduce(rbind,c(c(1,2,3),c(4,5,6))不同?

为什么rbind(c(1,2,3),c(4,5,6))与Reduce(rbind,c(c(1,2,3),c(4,5,6))不同?,r,reduce,rbind,R,Reduce,Rbind,假设我想要rbind任意数量的相同长度的对象,所以我认为减少该对象的向量是解决方案。但是: rbind(c(1,2,3),c(4,5,6)) > [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 但是, Reduce(rbind,c(c(1,2,3),c(4,5,6))) > [,1] init 1 2 3 4

假设我想要rbind任意数量的相同长度的对象,所以我认为减少该对象的向量是解决方案。但是:

rbind(c(1,2,3),c(4,5,6))
>     [,1] [,2] [,3]
 [1,]    1    2    3
 [2,]    4    5    6
但是,

Reduce(rbind,c(c(1,2,3),c(4,5,6)))
>      [,1]
 init     1
          2
          3
          4
          5
          6
为什么两者不产生相同的输出?我应该如何找到任意数量的相同长度的对象?

如果只运行

c(c(1,2,3),c(4,5,6))
# [1] 1 2 3 4 5 6
你会看到,它只是创建了一个长度为6的向量。这不是两个独立的向量。不能有包含其他向量的向量,但可以有包含向量的列表。因此,正确的语法是

Reduce(rbind,list(c(1,2,3),c(4,5,6)))

#      [,1] [,2] [,3]
# init    1    2    3
#         4    5    6
如果你只是跑

c(c(1,2,3),c(4,5,6))
# [1] 1 2 3 4 5 6
你会看到,它只是创建了一个长度为6的向量。这不是两个独立的向量。不能有包含其他向量的向量,但可以有包含向量的列表。因此,正确的语法是

Reduce(rbind,list(c(1,2,3),c(4,5,6)))

#      [,1] [,2] [,3]
# init    1    2    3
#         4    5    6
如果你只是跑

c(c(1,2,3),c(4,5,6))
# [1] 1 2 3 4 5 6
你会看到,它只是创建了一个长度为6的向量。这不是两个独立的向量。不能有包含其他向量的向量,但可以有包含向量的列表。因此,正确的语法是

Reduce(rbind,list(c(1,2,3),c(4,5,6)))

#      [,1] [,2] [,3]
# init    1    2    3
#         4    5    6
如果你只是跑

c(c(1,2,3),c(4,5,6))
# [1] 1 2 3 4 5 6
你会看到,它只是创建了一个长度为6的向量。这不是两个独立的向量。不能有包含其他向量的向量,但可以有包含向量的列表。因此,正确的语法是

Reduce(rbind,list(c(1,2,3),c(4,5,6)))

#      [,1] [,2] [,3]
# init    1    2    3
#         4    5    6

对于任意数量的向量,您可以将它们放入
列表
并使用
do.call

> do.call("rbind", list(c(1,2,3),c(4,5,6)))
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
在较长的列表中,例如:

> do.call("rbind", list(c(1,2,3),c(4,5,6), 7:9, 10:12))
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
#[3,]    7    8    9
#[4,]   10   11   12

对于任意数量的向量,您可以将它们放入
列表
并使用
do.call

> do.call("rbind", list(c(1,2,3),c(4,5,6)))
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
在较长的列表中,例如:

> do.call("rbind", list(c(1,2,3),c(4,5,6), 7:9, 10:12))
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
#[3,]    7    8    9
#[4,]   10   11   12

对于任意数量的向量,您可以将它们放入
列表
并使用
do.call

> do.call("rbind", list(c(1,2,3),c(4,5,6)))
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
在较长的列表中,例如:

> do.call("rbind", list(c(1,2,3),c(4,5,6), 7:9, 10:12))
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
#[3,]    7    8    9
#[4,]   10   11   12

对于任意数量的向量,您可以将它们放入
列表
并使用
do.call

> do.call("rbind", list(c(1,2,3),c(4,5,6)))
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
在较长的列表中,例如:

> do.call("rbind", list(c(1,2,3),c(4,5,6), 7:9, 10:12))
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
#[3,]    7    8    9
#[4,]   10   11   12
使用
do.call(rbind,list(c(1,2,3),c(4,5,6))
或将参数传递为列表
Reduce(rbind,list(c(1,2,3),c(4,5,6))
使用
do.call(rbind,list(c(1,2,3),c(4,5,6))
或将参数传递为列表
Reduce(rbind,list(c(1,2,3),c(4,5,6))
使用
do
或将参数作为列表传递
Reduce(rbind,list(c(1,2,3),c(4,5,6))
使用
do.call(rbind,list(c(1,2,3),c(4,5,6))
或将参数作为列表传递
Reduce(rbind,list(c(1,2,3),c(4,5,6))