Вместо того, чтобы читать их в R вначале и затем объединять их, вы можете заставить SQLite прочитать их и объединить их перед отправкой в R. Таким образом, файлы никогда не загружаются в R.
# create two sample files
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)
# now we do the real work
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
. Здесь мы использовали значения по умолчанию, поэтому это было не так важно.