Rafael A. Irizarry wrote:

Using Sweave in the tools library (R version 1.8.0: sorry i havent upgraded), it seems i cant use if statements in R chunks that make graphs. i have this:

<<fig=TRUE,echo=F>>=
par(mfrow=c(1,1))
if(exists("x")) plot(x,x)
else{
plot(1,1,type="n")
text(1,1,"data not available.\n")
}
@


and I get this error:

Error:  chunk 6
Error in parse(file, n, text, prompt) : parse error

any help is appreciated.


Whenever you get an error message, copy and paste it into an R session (interactive) and see what happens. At least then you'll know where the problem is, and whether it's a Sweave problem or a problem with your R syntax (in this case, it's the second option. sorry).


This problem is almost, but not quite, a FAQ.

The problem is that the "if(...)" is syntactically complete after the first plot() command. The "else {" appears out of nowhere, as far as the R interpreter is concerned, and this makes no sense.

The fixes:

1) Always do this:

if(something) {
  do something
} else {
  do something else
}

Note exactly (!) where the curly braces are, relative to the "else".

2) wrap the whole thing in curly braces.

{
   if(something)
     do somthing
   else {
     do something else
   }
}

Cheers

Jason


-- Indigo Industrial Controls Ltd. http://www.indigoindustrial.co.nz 64-21-343-545 [EMAIL PROTECTED]

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to