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
reasonable thing for diag(<matrix>, <numeric>, <numeric>) to return, then at
the very least the error message should be changed, as the first argument is
in fact a matrix.

On Thu, May 14, 2009 at 3:24 PM, Benilton Carvalho <bcarv...@jhsph.edu>wrote:

> 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:
>
>  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,]    1    3
>> [2,]    2    4
>>
>>> diag(foo)
>>>
>> [1] 1 4
>>
>>> diag(foo, 2, 2)
>>>
>> Error in diag(foo, 2, 2) : first argument is array, but not matrix.
>>
>>> is.matrix(foo)
>>>
>> [1] TRUE
>>
>> ______________________________________________
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
>

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to