我创建了一个 R 函数来执行子集、汇总、密度和绘图。我最初是在 RStudio 中将子集分配给我的工作区,但我开始遇到内存限制。最新版本试图将汇总的观察计数存储在 SQLite 数据库中,而不是将子集作为自己的数据框导出。理论上,这将使用更少的内存。为了执行这个过程,我在我的函数中创建了一个新数据库,如下所示:
sqldf("attach 'mydb' as new")
sqldf("create table TotalsTbl as select 'resimrr' as name, count(*) as count from resimrr", dbname="mydb")
sqldf("insert into TotalsTbl select 'resimrrquan' as name, count(*) as count from resimrrquan", dbname="mydb")
然后我创建了一些表,并将它们填充为函数进程。最后,我将 SQLite 表的查询结果导出到数据框,然后分配给我的工作区。
这提供了预期的结果:
sqldf("select * from TotalsTbl, dbname="mydb")
name count
1 resimrr 95517
2 resimrrquan 93928
现在的挑战是数据库是持久的。它是在第一次调用该函数时创建的,它存在于我的 Rsessions 和我的工作区中,如果我再次运行该函数,CREATE TABLE 命令将失败,因为表已经存在。所以问题是如何在我的函数中使用它后删除/清理“mydb”?