On 6/9/05, Hans-Peter <[EMAIL PROTECTED]> wrote:
> Dear R-Users,
> 
> I have two questions:
> 
> a)
> in a directory there are 3 files:
> [1] "Data.~csv"            "Kopie von Data.~csv"  "VorlageTradefile.csv"
> 
> The command "dir( fold, pattern = "\.csv" )" gives back *all* the 3 files
> With dir( fold, pattern = "\\.csv" ) I get back only VorlageTradefile.csv.
> I don't understand this behaviour, IMHO the regex expression "\.csv"
> becomes the string ".csv" and "\\.csv" becomes "\.csv". So the first
> string should catch it. This is also consistent with the result when I
> tried with the TRegExpr Tool. Could somebody explain what's going on
> here?

The dot (.) is a wildcard that matches any character so .csv will 
match the ~csv since the . matches the ~.

By the way, note that

1.  "[.]csv" is one way to specify a literal dot without using backslashes
2.  you probably want "[.]csv$" so that a.csv.txt is not matched.
3. Some regular expression functions have a fixed= argument that
    causes them to regard all special characters like . and * as regular
    characters but unfortunately dir lacks that argument.

> 
> b)
> I need to handle a copied windows file path. This is certainly often
> asked but I didn't find a solution.
> How can I convert, e.g.
> 
> myfile <- "D:\UebungenNDK\DataMining\DataMiningSeries.r"

Variable myfile, as you have written it above, has no backslashes in it 
so there is no way way to know where they are supposed to be.  Maybe \
what you mean is that you have a variable that is _stored_ as:

D:\UebungenNDK\...etc..

In that case its already the same as myfile <- "D:\\UebungenNDK\\...etc.."
Use nchar to check how many characters are stored.

e.g.

nchar("D:\\abc")  # there are 6, not 7, characters in this string

> in either:
> 
> myfile
> [1]  "D:\\UebungenNDK\\DataMining\\DataMiningSeries.r"
> 
> or:
> myfile
> [1]  "D:/UebungenNDK/DataMining/DataMiningSeries.r"
> 
> Would be great to hear about a possibility!

You can convert backslashes to forward slashes using gsub

gsub("\\", "/", "D:\\abc", fixed = TRUE)

Note that internally Windows understands forward slashes
although many of the Windows commands do not.

In case I did not understand your question have a look at ?file.path
and also ?glob2rx in package sfsmisc.  The first one will construct
paths and the second one allows you specify wildcards using globbing
instead of regular expressions.

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to