我有两个大表,old_customers和new_customers,我想对它们进行行绑定。这样做但是其中一个太大而无法加载到内存中。但是,我不确定bind_rows
是否允许绑定两个表而不是它们都是数据帧。我尝试
old <- tbl(conn, 'old_customers')
new <- tbl(conn, 'new_customers')
old %>% bind_rows(new)
Error in bind_rows_(x, .id) :
Argument 1 must be a data frame or a named atomic vector, not a tbl_dbi/tbl_sql/tbl_lazy/tbl
另一种选择就像是
old <- as.data.frame(tbl(conn, 'old_customers'))
new <- as.data.frame(tbl(conn, 'new_customers'))
old %>% bind_rows(new)
但同样,我试图避免将此数据集加载到内存中。有办法解决这个问题吗?
答案 0 :(得分:4)
您可以使用union_all
函数,该函数与rbind
或bind_rows
非常相似,但应该具有无需在内存中加载数据的附加优势。
old <- tbl(conn, 'old_customers')
new <- tbl(conn, 'new_customers')
old %>% union_all(new)