你可以让SQLite在将它们发送到R之前读取并组合它们,而不是一开始就将它们读入R再进行组合。这样,文件就不会单独加载到R中。
DF1 <- data.frame(A = 1:2, B = 2:3)
write.table(DF1, "data1.dat", sep = ",", quote = FALSE)
rm(DF1)
DF2 <- data.frame(A = 10:11, B = 12:13)
write.table(DF2, "data2.dat", sep = ",", quote = FALSE)
rm(DF2)
library(sqldf)
data1 <- file("data1.dat")
data2 <- file("data2.dat")
sqldf(c("select * from data1",
"insert into data1 select * from data2",
"select * from data1"),
dbname = tempfile())
这会产生以下结果:
> sqldf(c("select * from data1", "insert into data1 select * from data2", "select * from data1"), dbname = tempfile())
A B
1 1 2
2 2 3
3 10 12
4 11 13
如果行顺序不重要,这个更短的版本也可以工作:
sqldf("select * from data1 union select * from data2", dbname = tempfile())
请查看 sqldf 主页 http://sqldf.googlecode.com 和?sqldf
获取更多信息。 特别注意文件格式参数,因为它们与 read.table
相似但不完全相同。 在这里我们使用了默认设置,所以这不是一个问题。
memory.limit(size = 4000)
这样的东西吗? - Prasad Chalasaniwrite.csv
将它们保存起来,然后使用 shell 组合数据。请参阅 https://dev59.com/jnE95IYBdhLWcg3wDpmg - Jamesrbind
这样的函数创建基于sqldf
的版本听起来对某些人来说是一个有趣的作业挑战。 - Richie Cotton