我正在使用RSQLiteR in中的库来管理对RAM来说太大的数据集.对于每个回归,我查询数据库以一次检索一个会计年度.现在我有财政年度的硬编码:
data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==2008")
Run Code Online (Sandbox Code Playgroud)
我想让财政年度(2008年上面)让变更更容易(并且万无一失).有没有办法可以将变量传递给SQL查询字符串?我很乐意使用:
fiscal.year <- 2008
data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==fiscal.year")
Run Code Online (Sandbox Code Playgroud)
SQLite只会看到为查询传递的字符串,所以你要做的就是这样
sqlcmd <- paste("SELECT * FROM annual WHERE fiscal=", fiscal.year, sep="")
data.annual <- dbGetQuery(db, sqlcmd)
Run Code Online (Sandbox Code Playgroud)
好消息是你可以通常的方式来解开循环.忘了你有ram限制的第二个,概念上你可以做到
years <- seq(2000,2010)
data <- lapply(years, function(y) {
dbGetQuery(db, paste("SELECT * FROM annual WHERE fiscal=", y, sep="")
}
Run Code Online (Sandbox Code Playgroud)
现在数据是一个包含所有年度数据集的列表.或者您可以保留数据,运行回归并仅存储摘要对象.