[Rd] possible bug in diag()

Deepayan Sarkar deepayan at stat.wisc.edu
Wed Sep 17 13:01:35 MEST 2003


Why is this a bug ? help(diag) says

     If 'x' is a vector (or 1D array) of length two or more, then
     'diag(x)' returns a diagonal matrix whose diagonal is 'x'.

     If 'x' is a vector of length one then 'diag(x)' returns an
     identity matrix of order the nearest integer to 'x'.  The
     dimension of the returned matrix can be specified by 'nrow' and
     'ncol' (the default is square).

There's no way of knowing what rnorm(1) returned in your particular call, but 
my guess is that the integer "nearest" to it was 0.


On Wednesday 17 September 2003 11:51, Marsland, John wrote:
> It concerns trival diagonal matrices:
> > diag(1)
>
>      [,1]
> [1,]    1
>
> > diag(rnorm(1))
>
> <0 x 0 matrix>
>
> > diag(rnorm(1),nrow=1)
>
>           [,1]
> [1,] 0.4843697
>
> There's an obvious work around... but I thought it was worth notifying the
> list.
>
> Regards,
>
> John Marsland
>
>
> **********************************************************************
> This is a commercial communication from Commerzbank AG.\ \ T...{{dropped}}
>
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list