Thanks a lot!

I know the first and third way to correct the error. The second way seems make me know why the code is correct in the function stats::weighted.residuals.

On 2022/10/21 17:36, Andrew Simmons wrote:
The error comes from the expression not being wrapped with braces. You could change it to

if (is.matrix(r)) {
    r[w != 0, , drop = FALSE]
} else r[w != 0]

or

{
    if (is.matrix(r))
        r[w != 0, , drop = FALSE]
    else r[w != 0]
}

or

if (is.matrix(r)) r[w != 0, , drop = FALSE] else r[w != 0]


On Fri., Oct. 21, 2022, 05:29 Jinsong Zhao, <jsz...@yeah.net> wrote:

    Hi there,

    The following code would cause R error:

     > w <- 1:5
     > r <- 1:5
     >         if (is.matrix(r))
    +             r[w != 0, , drop = FALSE]
     >         else r[w != 0]
    Error: unexpected 'else' in "        else"

    However, the code:
             if (is.matrix(r))
                 r[w != 0, , drop = FALSE]
             else r[w != 0]
    is extracted from stats::weighted.residuals.

    My question is why the code in the function does not cause error?

    Best,
    Jinsong

    ______________________________________________
    R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
    https://stat.ethz.ch/mailman/listinfo/r-help
    PLEASE do read the posting guide
    http://www.R-project.org/posting-guide.html
    <http://www.R-project.org/posting-guide.html>
    and provide commented, minimal, self-contained, reproducible code.


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to