sqldf - 循环遍历字符向量中的几个元素

时间:2013-10-26 05:32:55

标签: r

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

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

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

myplace.graph1 <- ggplot2(myquery)

我的目标是为每个“myplace”元素自动生成大量表格和图形 - 我想这样做,因为我的数据集每月更新一次,我必须报告它。 (出于这个原因,我不认为按照本网站上类似查询的建议进行分组是可行的方法,尽管我有待纠正)。

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

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

非常感谢

1 个答案:

答案 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)))