r将多个数据表与动态生成的列表合并

时间:2017-11-18 16:03:16

标签: r merge data.table

此代码工作正常,但需要提前了解数据表名称以构建list(x,y,z)

library(data.table)
x <- data.table(i = c("a","b","c"), j = 1:3)
y <- data.table(i = c("b","c","d"), k = 4:6)
z <- data.table(i = c("c","d","a"), l = 7:9)

Reduce(function(...) merge(..., all = TRUE, by = "i"), list(x, y, z))

但是我有一个生成数据表的脚本(名称是动态构造的)并创建一个字符向量,如下所示:

dtList <- c("x", "y", "z")

我想在Reduce代码中使用dtList。我尝试过各种各样的事情。这些都不起作用

list(dtList)
as.vector(dtList, mode = "list")

1 个答案:

答案 0 :(得分:0)

以下是我根据JRR的评论提出的代码,这些代码似乎适用于我的特定设置。 dtNameList实际上是从我的完整代码中的其他地方读入的,但是对于这个例子,我刚刚创建了它的虚拟版本。

library(data.table)
dtList <- list()

dtNameList <- c("x", "y", "z")
for (k in 1:length(dtNameList)){
  dt <- data.table(i = c("a","b","c"), j = 1:3)
#  assign(k, dt)
  dtList[[dtNameList[k]]] <- dt
}
Reduce(function(...) merge(..., all = TRUE, by = "i"), dtList)