首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sqldf中处理引号

在sqldf中处理引号
EN

Stack Overflow用户
提问于 2013-09-08 16:37:57
回答 1查看 1.3K关注 0票数 0

我希望使用sqldf并能够编写SQL语句,就像在sql命令终端中编写sql语句一样。

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

代码语言:javascript
复制
Gavg <- sqldf("select g, avg(v) as avg_v from DF group by g")

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

代码语言:javascript
复制
select g,
avg(v) as avg_v
from "DF"
group by g

但是,如果我将其写为:

代码语言:javascript
复制
Gavg <- sqldf("
    select g,
    avg(v) as avg_v
    from "DF"
    group by g
")

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

这个是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-08 18:52:05

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

代码语言:javascript
复制
escape.quote <- function(){
  s <- paste(scan(what=character(),sep="\n"),collapse=" ")
  s <- gsub('"','\"',s)
  s <- gsub("'","\'",s)
  return(s)
} 

然后,只需将其插入sqldf()调用中,并在其中复制和粘贴查询。就像这样:

代码语言:javascript
复制
> 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18686083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档