[軟體程式類別]:R
[程式問題]:將反斜線(BackSlash)轉換成斜線(Slash)或雙反斜線(double backslash)
[軟體熟悉度]
高(1年以上)
[問題敘述]:因為設計一個可以由使用者選擇檔案存放處的程式,當選擇好儲放位置後
R會將計算結果儲放在所指定的地方上。但因為windows系統檔案儲放處格式都是反斜線
格式,例如"D:\demo\statistics.xls",此路徑放到R中無法正確執行,必須轉換成
"D:\\demo\\statistics.xls"或"D:/demo/statistics.xls"。
[程式範例]:
曾研究過幾種解決方式,但均因部分問題而無法解決,例如利用readline函數
> path=readline("Input File: ")
# 手動輸入 D:\demo\statistics.xls 可得答案
> path
[1] "D:\\demo\\statistics.xls"
但問題是手動輸入部分是由使用者以Browser決定,所得出的路徑會自動補上引號
"D:\demo\statistics.xls"
以此放入到readline函數中結果將變成
[1] "\"D:\\demo\\statistics.xls\""
此將造成程式錯誤
另外曾找到gsub函數似乎可以將反斜線變成斜線,但不知道如何使用
以上,有請R前輩撥空指導程式疑惑,謝謝大家
-----------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.107.217
※ 編輯: discount 來自: 114.45.107.217 (02/16 21:35)
2F:→ discount:感謝提供資訊,但看完好像無法得到靈感? 02/17 08:23
3F:→ obarisk:用內建的gsub(),如果在linux直接cal sed會比較快 02/17 08:26
4F:→ obarisk:參考?gsub()範例二 02/17 08:40
5F:→ obarisk:path<-readline() 02/17 08:40
6F:→ obarisk:path<-gsub("(\\/)","\\1/",path); 02/17 08:41
7F:→ diplazium:何不用file.choose()直接用對話視窗來指定path及檔名? 02/17 12:20
8F:推 gsuper:gsub 可以配 regular expression 喔 , 又學了一招 02/17 13:16
9F:→ gsuper:我都靠linux的記事本在轉 "\" 和 "#" 這兩種字元 02/17 19:16
10F:→ obarisk:用linux可以用pipe+sed啊 02/17 20:29
11F:推 obarisk:7F說的好,只是在win還是得自己加入\\? 02/17 20:36
12F:→ obarisk:很少用win所以不確定 02/17 20:36
13F:→ discount:感謝大家慷慨解惑,因所設計的程式已有自己的Browser,所 02/17 22:02
14F:→ discount:以不打算利用R內建的file.choose()功能,另外eadline函數 02/17 22:03
15F:→ discount:僅適合輸入未含引號的path,若有引號則會出錯,這就是我發 02/17 22:04
16F:→ discount:問尋求解答的原因! 02/17 22:04
17F:→ gsuper:官腔? 02/18 03:30
18F:→ discount:甚麼官腔? 02/18 19:07