如何在rbind中自动命名列?

如何在rbind中自动命名列?,r,rbind,R,Rbind,我经常使用相同的变量来rbind向量: v1 = 1 v2 = 2 rbind(c(v1, v2), c(v1, v2)) [,1] [,2] [1,] 1 2 [2,] 1 2 rbind(c(v1 = v1, v2 = v2), c(v1= v1, v2 = v2)) v1 v1 [1,] 1 2 [2,] 1 2 我知道我可以显式地命名向量列,但当您有许多变量时,这是相当繁琐和冗余的: v1 = 1 v2 = 2 rbind(c(v1

我经常使用相同的变量来rbind向量:

v1 = 1
v2 = 2
rbind(c(v1, v2), c(v1, v2))
     [,1] [,2]
[1,]    1    2
[2,]    1    2
rbind(c(v1 = v1, v2 = v2), c(v1= v1, v2 = v2))
     v1 v1
[1,]  1  2
[2,]  1  2
我知道我可以显式地命名向量列,但当您有许多变量时,这是相当繁琐和冗余的:

v1 = 1
v2 = 2
rbind(c(v1, v2), c(v1, v2))
     [,1] [,2]
[1,]    1    2
[2,]    1    2
rbind(c(v1 = v1, v2 = v2), c(v1= v1, v2 = v2))
     v1 v1
[1,]  1  2
[2,]  1  2

如何指示rbind()使用变量名来命名每一列?

您只需命名传递到
rbind
的第一个向量中的元素:

v1 <- 1
v2 <- 2
rbind(c(v1=v1, v2=v2), c(v1, v2), c(4, 5))
#      v1 v2
# [1,]  1  2
# [2,]  1  2
# [3,]  4  5

v1您可以结合使用
rbind
mget

v1 <- 1
v2 <- 2

rbind(mget(c("v1", "v2")), mget(c("v1", "v2")))

为什么要对自己施加压力?只需添加另一行代码即可轻松添加名称
colnames(x)只需使用
data.frame()
而不是
c()
。(虽然我认为您的第二个示例中有一个输入错误;您绑定的内容中的列名不一致。)@RichardScriven我可以,但想象一下,如果结果向量中有几十个变量。然后你必须在最后的矩阵或日期框中输入完整的列表,即使向量中已经有信息。@joran我喜欢你的解决方案。听起来你真的不能对向量做同样的事情吗?@RobertKubrick使用
rbind(cbind(v1,v2),cbind(v1,v2))
来获得一个列自动标记矩阵。我发布了一个与
mget
类似的想法,并将其删除,因为OP没有寻找它。什么都没有。只是另一个解决方案是首选方案,因为它使用了只需命名一次的
rbind
属性。:-)另一个解决方案不是自动的。。。哦,好吧!我删除了我的解决方案
new mget和data.frame()都很好。很高兴知道,但在我的情况下,我无法判断哪个向量将是第一个rbind。我使用by()分割数据帧并计算每个子集的聚合数据。在其他情况下,我有mclappy(),它在每个列表元素上并行运行,并返回结果。