[软体程式类别]: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