[R] Can anyone help why the errors are coming and rectify it?
Jessica Streicher
j.streicher at micromata.de
Mon Sep 17 15:54:00 CEST 2012
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.Harding at 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.Harding at wlandres.net>
>> Date: 17-Sep-2012 Time: 12:29:46
>> This message was sent by XFMail
>>
>> ______________________________________________
>> R-help at 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 at 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.
More information about the R-help
mailing list