-1

我在该站点的其他地方看到可以将单个变量传递给 sqldf,但我无法找到一种方法来循环“myplace”中的所有值:

myplace <- ("place1", "place2", "place3", ...)

myquery <- sqldf(select things from mydata where place = myplace)

myplace.graph1 <- ggplot2(myquery)

我的目标是为每个“myplace”元素自动生成许多表格和图表——我想这样做,因为我的数据集每月更新一次,我必须报告它。(出于这个原因,我不认为分组,正如本网站上的一个类似查询所建议的那样,是要走的路,尽管我愿意被纠正)。

我正在学习 R 绳索以替换一堆混乱的电子表格 - 我的数据现在在 sqlite 中,但我也看不到循环通过“dbgetQuery”的方法。

很可能需要一种完全不同的方法——我正在探索 R,因为图表看起来很棒,我可以记录我的步骤并且它是开源的——我将不胜感激任何建议。

非常感谢

4

1 回答 1

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) 或使用$.fngsubfn(由 sqldf 自动加载,因此可用),如sqldf 主页上的示例 5所示:

sql <- "select things from mydata where place = '$p' "
lapply(myplace, function(p) plot(fn$sqldf(sql)))
于 2013-10-26T05:38:07.903 回答