[Rd] diag(-1) produces weird result
Gábor Csárdi
c@@rdi@g@bor @ending from gm@il@com
Mon Sep 17 18:22:31 CEST 2018
I would say it is a mis-feature. If the 'x' argument of diag() is a
vector of length 1, then it creates an identity matrix of that size,
instead of creating a 1x1 matrix with the given value:
❯ diag(3)
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
Of course this makes it cumbersome to use diag() in a package, when
you are not sure if the input vector is longer than 1. This seems to
be a good workaround:
❯ diag(-1, nrow = 1)
[,1]
[1,] -1
Or, in general if you have vector v:
❯ v <- -1
❯ diag(v, nrow = length(v))
[,1]
[1,] -1
Gabor
On Mon, Sep 17, 2018 at 5:14 PM William Revelle <lists using revelle.net> wrote:
>
> Dear list
>
> A strange bug in the psych package is due to the behavior of the diag function:
>
> It gives the expected values for 1, a vector (-1,1), but not for -1
>
> Is this a known feature?
>
>
> > diag(1)
> [,1]
> [1,] 1
> > diag(c(-1,1))
> [,1] [,2]
> [1,] -1 0
> [2,] 0 1
> > diag(-1)
> Error in diag(-1) : invalid 'nrow' value (< 0)
>
>
> Bill
>
>
> William Revelle personality-project.org/revelle.html
> Professor personality-project.org
> Department of Psychology www.wcas.northwestern.edu/psych/
> Northwestern University www.northwestern.edu/
> Use R for psychology personality-project.org/r
> It is 2 minutes to midnight www.thebulletin.org
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list