我有一个带有许多表的大型SQLite数据库。我已经使用RSQLite和DBI包在RStudio中建立了与此数据库的连接。(我已将此数据库命名db
)
library(RSQLite)
library(DBI)
目前,我必须阅读所有表格并手动为其命名。例如:
country <- dbReadTable(db, "country")
date <- dbReadTable(db, "date")
#...and so on
如果要有很多表,您会发现这可能是一个非常耗时的过程。
因此,我想知道是否有可能创建一个新功能或使用现有功能(例如lapply()
?)来更有效地完成此操作并从本质上加快该过程?
任何建议都非常感激:)
两种心态:
将所有表/数据合并到一个命名列表中:
alldat <- lapply(setNames(nm = dbListTables(db)), dbReadTable, conn = db)
这样做的好处是,如果这些表具有相似的含义,则可以用来lapply
对每个表应用相同的功能。另一个好处是来自一个数据库的所有数据都存储在一起。
请参阅如何制作数据帧列表?用于处理帧列表。
如果您希望将它们作为全局(或封闭)环境中的实际变量,则采用先前的alldat
,然后
ign <- list2env(alldat, envir = .GlobalEnv)
从的返回值list2env
是我们传递给的环境list2env
,因此在此上下文中它的作用不是很大(尽管在其他时候它是有用的)。我捕获它的唯一原因ign
是减少了控制台上的混乱……这是次要的。list2env
主要作用是副作用,因此在这种情况下返回值并不重要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句