[R] How to convert backslash to slash?

Duncan Murdoch murdoch at stats.uwo.ca
Wed Sep 24 15:20:05 CEST 2008


Shengqiao Li wrote:
> On Wed, 24 Sep 2008, Duncan Murdoch wrote:
>
>   
>> Shengqiao Li wrote:
>>     
>>> On Tue, 23 Sep 2008, Duncan Murdoch wrote:
>>>
>>>
>>>       
>>>> On 23/09/2008 4:00 PM, Shengqiao Li wrote:
>>>>
>>>>         
>>>>> How to use sub, gsub, etc. to replace "\" in a string to "/"?
>>>>>
>>>>> For example,convert "C:\foo\bar" to "C:/foo/bar".
>>>>>
>>>>>           
>>>> If those are R strings, there are no backslashes in the first one.  It has 
>>>> a formfeed and a backspace in it.
>>>>
>>>>         
>>> I did notice that this string  was special. It's a legimate R string. If 
>>> "f" and "b" are replaced by "d", it will not. 
>>>       
>> I didn't say it was not legitimate, I said that it contains no backslashes. 
>> If you replace f or b with d, you do not have a legitimate string.
>>     
>>> My purpose is to convert a Windows file path (eg. copied from Explorer 
>>> location bar) to a R file path through some R function inside R terminal. 
>>> The "File->Change dir..." takes a file path like "C:\Acer", but setwd 
>>> function will fail. 
>>>       
>> That's not true.  If you enter a backslash in the string, setwd() works fine.
>>
>> Your problem is that you are confusing R source code with the strings that it 
>> represents.  The R source code for the file path C:\Acer is "C:\\Acer".  The
>> R source code "C:\foo\bar" contains no backslashes, it contains the 
>> characters C, :, formfeed, o, o,  backspace, a, r.
>>
>> If you have the string C:\Acer in the Windows clipboard, then you can read it 
>> from there using readClipboard().  (There are many other ways to read the 
>> clipboard as well;
>> using 'clipboard' as a filename generally works.) You can then pass it to 
>> setwd(), and it will be fine.
>>     
>
> Thank you for your reply. readClipboard is a partial solution to this 
> case. More generally, if I want to wrtie a R program in which users are 
> asked to input a file path. I want this program to be robust and tolerant, 
> that is users can type in C:\Acer or C:/Acer.  What's the way to do this?

Just treat their input as data, not as source code.  Backslashes are not 
special in data.

Duncan Murdoch



More information about the R-help mailing list