0

我想使用 sqldf 并且能够完全按照在 sql 命令终端中编写的方式编写 SQL 语句。

例如,这是手册中的一个查询:

Gavg <- sqldf("select g, avg(v) as avg_v from DF group by g")

如果我使用单独的 SQL 文件,查询将被写入:

select g,
avg(v) as avg_v
from "DF"
group by g

但是,如果我将其写为:

Gavg <- sqldf("
    select g,
    avg(v) as avg_v
    from "DF"
    group by g
")

我希望能够将代码片段复制/粘贴到 sqldf(" ") 周围的区域,而不必转义引号或不必引用包含该命令的外部 sql 文件。

这可能吗?

4

1 回答 1

1

对于您的用例,最简单的方法可能只是编写一些包装函数来为您转义所有这些字符。例如,这样的事情应该可以工作:

escape.quote <- function(){
  s <- paste(scan(what=character(),sep="\n"),collapse=" ")
  s <- gsub('"','\"',s)
  s <- gsub("'","\'",s)
  return(s)
} 

然后,您可以将其插入到您的sqldf()呼叫中,然后将您的查询复制并粘贴到那里。像这样:

> library(sqldf)
> set.seed(2)
> DF <- data.frame(g=rep(1:2,5),v=rnorm(10))
> sqldf(escape.quote())
1: select g,
2: avg(v) as avg_v
3: from "DF"
4: group by g
5: 
Read 4 items
  g      avg_v
1 1  0.6606215
2 2 -0.2383182
于 2013-09-08T18:52:05.450 回答