我想使用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文件。
这可能吗?
答案 0 :(得分: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