Mulholland, Tom wrote:
>
>>-----Original Message-----
>>From: [EMAIL PROTECTED]
>>[mailto:[EMAIL PROTECTED] Behalf Of Henrik Bengtsson
>>Sent: Tuesday, 28 June 2005 2:54 AM
>>To: Spencer Graves
>>Cc: [email protected]; Dirk Eddelbuettel
>>Subject: Re: [R] How to convert "c:\a\b" to "c:/a/b"?
>>
>
> ... snipped
>
>
>> Thus, you cannot write your program such that it fools the parser,
>>because your program is evaluated first after the parser. In other
>>words, there is no way you can get nchar("\n") to equal 2.
>>
>
>
> I had been waiting for this answer because it was the conclusion I had come
> to. Given that I mainly work in a windows world this has been a problem. For
> various reasons I receive files liberally sprinkled with such pathnames. I
> generally pre-process them using whatever is at hand. It's not a big problem,
> just annoying to have to explain to collegues that this is something R can't
> do. Not a good advertisment for those who have no idea about escape codes.
Please, note this basically only applies to source(), expressions at the
R prompt (and unfortunately read.table()), and therefore you should not
have to pre-process you files. Here are some illustrating example. It
is a good exercise to convince yourself that you understand why you get
the different results;
code <- "x <- \"D:\\spencerg\\statmtds\\R\\Rnews\""
cat(file="foo.R", code)
file.show("foo.R") # x <- "D:\spencerg\statmtds\R\Rnews"
x <- NA
eval(parse(text=code))
print(x)
rm(x)
[1] "D:spencergstatmtdsRRnews"
source("foo.R")
print(x)
[1] "D:spencergstatmtdsRRnews"
print(readLines("foo.R"))
[1] "x <- \"D:\\spencerg\\statmtds\\R\\Rnews\""
print(scan("foo.R", what=character(0), allowEscapes=FALSE))
[1] "x" "<-"
[3] "D:spencergstatmtdsRRnews"
print(read.table("foo.R"))
V1 V2 V3
1 x <- D:spencergstatmtdsRRnews
print(readChar("foo.R", nchar=256))
[1] "x <- \"D:\\spencerg\\statmtds\\R\\Rnews\""
> print(readBin("foo.R", what=integer(0), size=1, n=256))
[1] 120 32 60 45 32 34 68 58 92 115 112 101 110 99 101 114 103
92 115
[20] 116 97 116 109 116 100 115 92 82 92 82 110 101 119 115 34
Comment/suggestion: It would be nice if read.table() would pass argument
'allowEscapes' (or just '...') to scan().
/Henrik
> However I can't believe that this problem cannot be solved. The thoughts that
> have come through my head are to write a c routine that effectively ignores
> the possibility that \n means newline and thus remaps all the escape codes
> into text (\\ and the character code.)
>
> I've never written in C which is one of the reasons that I have never
> attempted this. I would be interested in any thoughts about the viability of
> my proposal. It seems an awful lot of work (at least for someone who hasn't
> done this sort of stuff before) for something that can be achieved in many
> other ways.
>
> Tom
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
>
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html