这个问题已经有一个答案在这里:

我用的 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串。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top