The intent of diag(foo, 2, 2) was to return a matrix that is a 2 x 2 matrix
which contains only the diagonal entries of the matrix foo. I can't do
diag(foo) because this returns a vector. I could reach my goal with
matrix(diag(foo), nrow = nrow(foo), ncol = ncol(foo)). If this is not a
Aha. Yes, it would. Thank you. However the error message is still
incorrect.
On Thu, May 14, 2009 at 3:35 PM, Benilton Carvalho bcarv...@jhsph.eduwrote:
in that case, wouldn't
diag(diag(foo))
suffice?
b
On May 14, 2009, at 4:30 PM, Michael Spiegel wrote:
The intent of diag(foo,
Full_Name: Michael Spiegel
Version: 2.9.0
OS: linux
Submission from: (NULL) (204.111.252.142)
The diag() function appears to reject the first argument when it is a matrix,
and nrow and ncol arguments are also provided.
foo - matrix(c(1:4),2,2)
foo
[,1] [,2]
[1,]13
[2,]24
My understanding is that providing nrow and ncol, you want to create a
diagonal matrix with those dimensions.
diag(pi, 6, 6)
and that by
diag(foo, 2, 2)
you really meant
diag(foo)[2]
Apologies if I misunderstood.
b
On May 14, 2009, at 10:45 AM, michael.m.spie...@gmail.com wrote:
Benilton Carvalho wrote:
in that case, wouldn't
diag(diag(foo))
suffice?
Yes (beware the length 1 case, though).
However, don't delete the bug report. That error message is just wrong:
if (is.array(x) length(dim(x)) != 1L)
stop(first argument is array, but not matrix.)
b