我想使用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文件。
这可能吗?
对于您的用例,最简单的方法可能就是编写一些包装函数,为您转义所有这些字符。例如这样的事情应该工作:
escape.quote <- function(){ s <- paste(scan(what=character(),sep="\n"),collapse=" ") s <- gsub('"','\"',s) s <- gsub("'","\'",s) return(s) }
然后,您可以将其插入sqldf()通话中,然后将查询复制并粘贴到此处。像这样:
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