在WHERE字段中使用用户指定变量的RSQLite查询

在WHERE字段中使用用户指定变量的RSQLite查询,r,rsqlite,R,Rsqlite,我正在使用R in中的RSQLite库来管理对RAM来说太大的数据集。对于每个回归,我都会查询数据库,每次检索一个会计年度。现在,我已将财政年度硬编码为: data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==2008") data.annualSQLite将只看到为查询传递的字符串,因此您所做的如下操作 sqlcmd <- paste("SELECT * FROM annual WHERE fisca

我正在使用R in中的
RSQLite
库来管理对RAM来说太大的数据集。对于每个回归,我都会查询数据库,每次检索一个会计年度。现在,我已将财政年度硬编码为:

data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==2008")

data.annualSQLite将只看到为查询传递的字符串,因此您所做的如下操作

  sqlcmd <- paste("SELECT * FROM annual WHERE fiscal=", fiscal.year, sep="")
  data.annual <- dbGetQuery(db, sqlcmd)

sqlcmdDirk的答案非常准确。我尝试做的一件小事是更改格式以便于测试。似乎我必须多次将SQL文本剪切并粘贴到SQL编辑器中。所以我的格式如下:

sqlcmd <- paste("
   SELECT * 
   FROM annual 
   WHERE fiscal=
 ", fiscal.year, sep="")
data.annual <- dbGetQuery(db, sqlcmd)

sqlcmd哇!我需要将使用
paste
创建字符串并将其作为参数传递的想法内化!谢谢您的意思是将它从一个emacs缓冲区粘贴到另一个emacs缓冲区?;-)哎哟哎哟别再戳我了。疼。哎哟,我的意思是“不要用我明显的emacs使用不足来戳我的眼睛”类似的一句话:
  years <- seq(2000,2010)
  data <- lapply(years, function(y) {
     dbGetQuery(db, paste("SELECT * FROM annual WHERE fiscal=", y, sep="")
  }
sqlcmd <- paste("
   SELECT * 
   FROM annual 
   WHERE fiscal=
 ", fiscal.year, sep="")
data.annual <- dbGetQuery(db, sqlcmd)