[Rd] Question about Unix file paths
Gabor Grothendieck
ggrothendieck at myway.com
Tue Nov 25 14:22:10 MET 2003
Actually that's what I currently do using something like:
readLines(pipe("cmd /c dir/b \\myfolder\\a*.txt"))
but its a pain since:
1. One has to explicitly paste together the filename from the
output of dir with the directory path to create a complete
path/filename for use in other commands. That's because, the
Windows dir command does not preface the filename with the
path (unless you use something like dir/b/s but that gives
you everything in subdirectories too which one may not want).
2. One must convert / to \ since dir will not take /. If one
uses \ then one has to write \\ in R strings, which is is annoying,
so I prefer to use /. For example, to convert all consecutives
series of / and \ to \ is: gsub("[/\\\\]+","\\\\",path)
or gsub("[/\\]+","\\\\",path) .
3. There are reported bugs in R's pipe() on Windows and although
I have not noticed them affecting the pipe above, I really don't know
what their cause is and I am just crossing my fingers on this one.
I guess I could redirect dir's output to a file but that would
be even more work.
4. Its all somewhat complex for a simple operation.
---
On Tue, 25 Nov 2003 07:27:46 -0500 (EST), you wrote:
>
>Perhaps the dir= and pattern= arguments could be combined so that
>its not necessary to for list.files to paste them together:
>
> list.files("C:/a*.txt", glob=T)
Why not use system() or shell() instead? Those explicitly do what ls
or dir would do.
Duncan Murdoch
More information about the R-devel
mailing list