题
这个问题已经有一个答案在这里:
- 动态"string"in R 2答案
我用的 RSQLite
图书馆R中管理的数据集是太大的RAM。为每个回归我查询的数据库检索财政年度,在一段时间。现在我有的财政年度硬编码:
data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==2008")
我想让财政年度(2008年以上)做出改变,更容易一点(和愚蠢的证明).有没有办法,我可以通过一个可变成SQL query string?我会喜欢使用:
fiscal.year <- 2008
data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==fiscal.year")
解决方案
源码只会看到串通过了下的查询,所以你要做的就是喜欢的东西
sqlcmd <- paste("SELECT * FROM annual WHERE fiscal=", fiscal.year, sep="")
data.annual <- dbGetQuery(db, sqlcmd)
这种做法的好处是,可以使用这个通常的方式来放松的循环。忘记第二,你有ram的限制,从概念上说你可以做的
years <- seq(2000,2010)
data <- lapply(years, function(y) {
dbGetQuery(db, paste("SELECT * FROM annual WHERE fiscal=", y, sep="")
}
和现在的数据是一个列表,其中包含所有年度的数据集。或者你可以保持数据,运行你的回归以及仅存的摘要对象。
其他提示
德克的答复。一个小小的事情,我试图做的是改变格式,很容易检测。似乎我已经剪切和粘贴SQL文成SQL编辑许多倍。所以我的格式是这样的:
sqlcmd <- paste("
SELECT *
FROM annual
WHERE fiscal=
", fiscal.year, sep="")
data.annual <- dbGetQuery(db, sqlcmd)
这只使得更易于剪切和粘贴SQL位出,用于测试在您的数据库查询的环境。没什么大不了的一个短暂的查询,但可以获得繁琐一再SQL串。
不隶属于 StackOverflow