如何自动命名 rbind 中的列?

How can I automatically name columns in 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

如何指示 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

我假设您提供的示例已经过简化,并且您不打算多次重复同一行;如果是这样,有比多次键入该行更简单的方法(例如使用 replicaterep)。

您可以使用 rbindmget 的组合:

v1 <- 1
v2 <- 2

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

mget 将在环境中搜索具有给定名称的变量。最重要的是,结果是一个命名的 list 对象。

不过,我认为更简洁的解决方案是只制作一个 data.frame,如上所示:

rbind(data.frame(v1, v2), data.frame(v1, v2))