[R] folders of path - platform independent (repost)

David Winsemius dwinsemius at comcast.net
Thu Dec 29 01:33:55 CET 2011


On Dec 28, 2011, at 5:57 PM, Ben quant wrote:

> One quick follow-up on reversing your example. Is there an easy way  
> to get
> the file.path separator for the platform?  file.path("","") seems  
> the be
> the only way to do it.

I don't get it. Did you look at ?file.path  ? It's default call shows  
fsep=

 > .Platform$file.sep
[1] "/"

?.Platform

-- 
David.
>
> So if filename is a valid file path, this will return the folders,  
> drive,
> and file name in vector form regardless of the platform:
> folders = strsplit(normalizePath(filename, winslash="/"), "/")[[1]]
> This will undo the above regardless of the platform:
> paste(folders,collapse=file.path('"",""))


>
> Thanks again for your help Duncan!
>
> Ben
>
>
>> On Wed, Dec 28, 2011 at 2:37 PM, Duncan Murdoch <murdoch.duncan at gmail.com 
>> >wrote:
>>
>>> On 11-12-28 4:30 PM, Ben quant wrote:
>>>
>>>> Hello, (sorry re-posting due to typo)
>>>>
>>>> I'm attempting to get the folders of a path in a robust way  
>>>> (platform
>>>> independent, format independent). It has to run on Windows and  
>>>> Linux and
>>>> tolerate different formats.
>>>>
>>>> For these: (The paths don't actually exist in Linux but you get the
>>>> idea.)
>>>>
>>>> Windows:
>>>> file_full_path = "C://Program Files//R//R-2.13.1//NEWS.pdf"
>>>> file_full_path = "C:\Program Files\R\R-2.13.1\NEWS.pdf"
>>>> Linux:
>>>> file_full_path = "~/Program FilesR/R-2.13.1/NEWS.pdf"
>>>> file_full_path = "/home/username/Program FilesR/R-2.13.1/NEWS.pdf"
>>>>
>>>> I would get for Windows: "C", "Program Files", "R",  
>>>> "R-2.13.1","NEWS.pdf"
>>>> I would get for Linux: "home","username", "Program Files", "R",
>>>> "R-2.13.1","NEWS.pdf"
>>>> (The drive and/or home/username aren't necessary, but would be  
>>>> nice to
>>>> have. Also, that file name isn't necessary, but would be nice.)
>>>>
>>>> Thank you for your help,
>>>>
>>>>
>>> If you use the normalizePath() function with winslash="/", then all
>>> current platforms will return a path using "/" as the separator,  
>>> so you
>>> could do something like
>>>
>>> strsplit(normalizePath(**filename, winslash="/"), "/")[[1]]
>>>
>>> You need to be careful with normalizePath:  at least on Windows,  
>>> it will
>>> not necessarily do what you wanted if the filename doesn't exist.
>>>
>>> Duncan Murdoch
>>>
>>
>>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list