Now i know why using else never worked for me - really, i'd consider this more of a bug than a feature of the language ;)
On 17.09.2012, at 14:35, R. Michael Weylandt wrote: > And now it is easy to see why we should all the one true brace style ;-) > > Michael > > On Mon, Sep 17, 2012 at 12:29 PM, Ted Harding <ted.hard...@wlandres.net> > wrote: >> On 17-Sep-2012 09:47:41 Sri krishna Devarayalu Balanagu wrote: >>> Hi Everyone, >>> Can anyone help why the errors are coming and rectify it? >>> >>> invalid.ids <- c(1,3,5) >>> if (length(invalid.ids)==0) { >>> >>> cat("No Errors found") >>> } >>> else { >>> >>> cat(paste(invalid.ids), sep="\n") >>> } >>> >>> Error: unexpected 'else' in "else" >>> Error: unexpected '}' in " }" >>> >>> Thank you in advance >>> >>> Warm Regards >>> Rayalu >> >> Reformatting your code (for readability) but preserving your >> line breaks: >> >> invalid.ids <- c(1,3,5) >> if (length(invalid.ids)==0) { >> cat("No Errors found") >> } >> else { >> cat(paste(invalid.ids), sep="\n") >> } } >> >> Error: unexpected 'else' in "else" >> Error: unexpected '}' in " }" >> >> First: >> >> The first four lines are a completed command, given the way >> that R parses input. After encountering the end-of-line at >> the fourth line, R considers that it has seen a complete command >> and therefore executes it. >> >> invalid.ids <- c(1,3,5) >> if (length(invalid.ids)==0) { >> cat("No Errors found") >> } >> >> Therefore the "else {" on the next line is not interpreted as >> if it were part of the preceding "if()" statement, since that >> has been considered complete and has been executed. So that >> "else" is an "else" with no matching "if". Henc the the first >> error message. >> >> Second: if you count the opening "{" and closing "}", you will >> see that there is one "}" too many, at the end, hence the second >> error message. >> >> The way to avoid the first error message is to put the "else" >> on the same line as the close of the "if" statement. Then R will >> recognise that it has an incomplete commend, and continue to parse >> further input until it has built up a complete command. So you >> should write: >> >> invalid.ids <- c(1,3,5) >> if (length(invalid.ids)==0) { >> cat("No Errors found") >> } else { >> cat(paste(invalid.ids), sep="\n") >> } >> >> (Note that the extra "}" has been omitted too). >> >> Hoping this helps, >> Ted. >> >> >> ------------------------------------------------- >> E-Mail: (Ted Harding) <ted.hard...@wlandres.net> >> Date: 17-Sep-2012 Time: 12:29:46 >> This message was sent by XFMail >> >> ______________________________________________ >> R-help@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. > > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.