【问题标题】:R rbind data.tables with different column using do.call on vector of names [duplicate]R rbind data.tables 具有不同的列使用 do.call 在名称向量上[重复]
【发布时间】:2020-07-09 01:30:49
【问题描述】:

我有几个 data.tables 具有不同的列,我想追加/行绑定。结果应该是一个包含所有列的 data.table(不仅仅是出现所有 rbinded 数据集的列)。这是一个例子

library(data.table)
df1 = data.frame(a = c(1:5), b = c(6:10))
df2 = data.frame(a = c(11:15), b = c(16:20), c = LETTERS[1:5])
rbindlist(list(df1, df2), fill = TRUE)

借用@kdauria 在这篇文章Combine two data frames by rows (rbind) when they have different sets of columns 中的回答。

但我只知道我的数据集是名称向量 c("a","b"),因为它们因场合而异。因此,我正在执行以下操作

goo <- function(...) rbind(...,fill=TRUE)
do.call(goo,sapply(c("a","b"),function(x) eval(parse(text=x))))

它完成了工作,但我在想是否没有更聪明的方法来构造 do.call() 调用。

【问题讨论】:

标签: r data.table do.call


【解决方案1】:

mget():

a = data.frame(a = c(1:5), b = c(6:10))
b = data.frame(a = c(11:15), b = c(16:20), c = LETTERS[1:5])
vn <- c("a","b")

rbindlist(mget(vn), fill = TRUE)

#      a  b    c
#  1:  1  6 <NA>
#  2:  2  7 <NA>
#  3:  3  8 <NA>
#  4:  4  9 <NA>
#  5:  5 10 <NA>
#  6: 11 16    A
#  7: 12 17    B
#  8: 13 18    C
#  9: 14 19    D
# 10: 15 20    E

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    相关资源
    最近更新 更多