我在本网站的其他地方看到单个变量可以传递给sqldf,但是我无法找到一种方法来循环“myplace”中的所有值:
myplace <- ("place1", "place2", "place3", ...)
myquery <- sqldf(select things from mydata where place = myplace)
myplace.graph1 <- ggplot2(myquery)
我的目标是为每个“myplace”元素自动生成大量表格和图形 - 我想这样做,因为我的数据集每月更新一次,我必须报告它。 (出于这个原因,我不认为按照本网站上类似查询的建议进行分组是可行的方法,尽管我有待纠正)。
我正在学习R绳索以替换一堆混乱的电子表格 - 我的数据现在是在sqlite中,但我也看不到循环“dbgetQuery”的方法。
很可能需要采用完全不同的方法 - 我正在探索R因为图表看起来很棒,我可以记录我的步骤并且它是开源的 - 我会很感激任何建议。
非常感谢
答案 0 :(得分:2)
1)查询只是一个文本字符串。在将文本字符串传递给sqldf
之前,您可以以所有常用方式操作该文本字符串。请参阅?paste
,?paste0
,?sprintf
等
qry <- paste("select things from mydata where place =", myplace[1])
myplace.graph1 <- plot(sqldf(qry))
myplace.graph <- list()
for(i in seq_along(myplace))
{
qry <- paste("select things from mydata where place =", myplace[i])
myplace.graph[[i]] <- plot(sqldf(qry))
}
2)或者,没有循环:
myplace.graph <- lapply(myplace, function(x) {
qry <- paste("select things from mydata where place =", x)
plot(sqldf(qry))
}
3)或者使用gsubfn包中的$.fn
(由sqldf自动加载,因此可用)Example 5上的sqldf home page:
sql <- "select things from mydata where place = '$p' "
lapply(myplace, function(p) plot(fn$sqldf(sql)))