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/m.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燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP