R_Language 板


LINE

[问题类型]: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来) [软体熟悉度]: 入门(写过其他程式,只是对语法不熟悉) [问题叙述]: 工作的时候要透过POST向公司的资料库发送SQL请求。 以往请求的时候大概是这样 https://imgur.com/PRyLi2e 最近恰好有张资料表的栏位开头是一堆 # 和 $, 导致要正常传送的话,必须手动在每个引号前面加入小牙签 \ 跳脱。 像是这样 https://imgur.com/U63m8Qs 问题是SQL如果长的话,想避免自己手动加入小牙签,不然会累死。 所以正在尝试各种方法让SQL最终发送出去的时候,都能够透过代码自动加上该有的小牙签。 目前找到最方便的办法是透过 r"()", 但是紧接着遇到下一个问题,就是Rstudio编辑器会把#当作备注, 导致脚本上面後面的东西都会乱掉,一堆unexpected token。 像是这样 https://imgur.com/BD9vYFQ 上面这个不换行还好,下面的abc <- c('abc') 不会有问题。 但如果SQL一坨的时候需要换行,#会被识别为备注, 就会变成这样 https://imgur.com/gYgYCxa 主要诉求: 1. 想将SQL语句自动化加入小牙签,并且能夹在body送出去。 2. 使用r"()"的话,让编辑器正常识别括号。 附上脚本(POST的url是公司的,脚本上只能拿掉了,不好意思): https://drive.google.com/file/d/1memSyxbYRqq0s-uXabhE2-PAyig3bgZA/view?usp=sharing 想请问有经验的大大们,有没有什麽办法能解决? 不见得要用r”()”也无所谓。 多谢了!Orz [环境叙述]: R version 4.0.0 (2020-04-24) Platform: x86_64-apple-darwin17.0 (64-bit) Running under: macOS Catalina 10.15.5 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 103.206.188.69 (香港)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1612442887.A.835.html ※ 编辑: Mensch5566 (103.206.188.69 香港), 02/04/2021 20:50:08
1F:推 locka: http://i.imgur.com/uApRF9w.jpg 02/05 02:13
2F:→ locka: 原po想要做到的是这样吗? 02/05 02:14
3F:→ locka: 我的想法是在funtion里面多一步,加一个gsub利用正则表达式 02/05 02:16
4F:→ locka: 寻找特殊字元并加入backslash(小牙签) 02/05 02:16
5F:→ andrew43: 如果是单、双引号交错使用呢? 02/05 15:09
6F:→ Mensch5566: 先感谢各位耐心帮忙,我问题可能没说清楚,我重新解释 02/05 19:22
我先重新解释一下 平常是会先在网页上调SQL,大概像这样: https://imgur.com/ggBi82u 如上图,红箭头是框栏位名的双引号,蓝箭头是框值的单引号,两者不能替换。 也就是说,R透过POST发送出去的字串,在加上小牙签之前,要跟图里的长得一模一样。 R要创建字串的时候, 双引号可以括住单引号: https://imgur.com/G6YWB1H 单引号可以括住双引号: https://imgur.com/iiX2q45 但是没办法同时框住单双引号: https://imgur.com/naoKVok 所以必须根据c()里面最外层的引号,加入小牙签。 如果最外层是双引号,则字串里的双引号前必须加入小牙签: https://imgur.com/IkMNYcH 如果最外层是单引号,则字串里的单引号前必须加入小牙签: https://imgur.com/UlEStXF 如此一来才能让R识别,创建出字串。 话说回来,因为会先在网页上写SQL,确认语句正确後, 会把整条SQL复制并贴到POST的自订函式里面。 但这样就会产生上面提到的,没办法同时框住单双引号。 不管外层用单或双引号,都没办法创建字串,因为里面单双引号都有。 https://imgur.com/DovVWtB 这时候唯一的办法,就是根据最外层的引号,把字串中的引号前面加上小牙签, 例如最外层是使用双引号,则把里面的双引号都加上小牙签, 像是这样: https://imgur.com/73qXquC 上图中可以看到c函式有正确建立字串,就表示POST函式也没有问题, 确实发送後也返回了200表示成功。 然而,现在的问题是,当网页上复制过来的SQL语句很长的时候, 还得自己一个一个手动加上小牙签,如果漏了就还得慢慢找。 因此想问,有没有什麽办法,可以在自订函式这边, 让贴过来的SQL就直接能处理,即加上应有的小牙签,并且POST出去。 目前找到最快的方法是使用r"()" 像这样: https://imgur.com/BGHLNL5 r"()" 用这前置字元确实可以说是完美了。 但偏偏r"()"现在Rstudio编辑器上面的判断有点怪, Rsutiod会将括号中的第一个双引号当作结束, 所以在编辑器上面看会变成这样,#後面都变注解: https://imgur.com/zuIkyDp 虽然後半段被判断为注解,但实际上R还是能识别。 但是真正写的时候肯定会换行,所以整个脚本就会有一堆unexpected token, 虽然代码还是能跑,但变得非常乱,像是这样: https://imgur.com/Xh9sWcT 所以想问问除了r"()",还有没有更好的办法。 跪谢惹Orz ※ 编辑: Mensch5566 (103.206.188.69 香港), 02/05/2021 19:23:49
7F:→ locka: 所以是在双引号前面加反斜线,那一样可以用gsub做不是吗? 02/05 20:41
8F:→ Mensch5566: 不是的,问题不在自订函数里面。 02/05 21:23
请看这张下图 https://imgur.com/f5Jfdn8 因为将#前的双引号视为结束,#之後的都变成注解, 所以送到console之後,显示加号,表示命令未完成。 自订函式的外层换作单引号之後,则因字串中还有单引号, 所以导致字串识别错误。 https://imgur.com/gT6TXmu 问题是在自订函数接收字串就已经产生, 所以不管自订函式里面是用gsub或什麽办法,他都没办法继续下一步处理。 ※ 编辑: Mensch5566 (103.206.188.69 香港), 02/05/2021 21:30:08
9F:推 andrew43: 可以和rstudio提报issue。编辑器应该可以再聪明一点才 02/06 00:41
10F:→ andrew43: 是。 02/06 00:41
11F:→ Mensch5566: 好的,准备回报去!感谢协助Orz 02/06 10:02
12F:→ Mensch5566: 感谢提醒,一直纠结代码,更新Rstudio,新版已解决 02/06 10:18







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP