Hi, Gerrit:
On 12/5/24 05:04, Gerrit Eichner wrote:
Hi, Bert,

thx, but I don't think so, because your example fails, if you use
different entries for matrix A than your vector 1:25. (Try A filled with only zeroes, e.g.)

YOU'VE MISUNDERSTOOD Bert's reply: A matrix is a vector, and Bert assigned the indices of the vector to the cells of the matrix.

> A <- matrix(1:25, nrow = 5, ncol = 5)
> A[1:25]
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
> A[13]
[1] 13


"if you use different entries for matrix A", the entries are no longer the indices of A as a vector.

          Does this fact make his example work for you?


          It does for me.
          Hope this helps.
          Spencer Graves

I guess, Duncan Murdochs hint is crucial. I'll comment on his asap.

  Best regards  --  Gerrit

---------------------------------------------------------------------
Dr. Gerrit Eichner                   Mathematical Institute, Room 215
gerrit.eich...@math.uni-giessen.de   Justus-Liebig-University Giessen
Tel: +49-(0)641-99-32104          Arndtstr. 2, 35392 Giessen, Germany
https://www.uni-giessen.de/math/eichner
---------------------------------------------------------------------

Am 04.12.2024 um 14:38 schrieb Bert Gunter:
matrices are vectors with a "dim" attribute.
So what I think is happening is:

A <- matrix(1:25, nrow = 5, ncol = 5)
diag(A[-1,]) <- 0
A
      [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   11   16   21
[2,]    0    7   12   17   22
[3,]    3    0   13   18   23
[4,]    4    9    0   19   24
[5,]    5   10   15    0   25
## is equivqalent to:

A <- matrix(1:25, nrow = 5, ncol = 5)
wh <- c(diag(A[-1,]))   # A's vector indices of diag(A[-1,])
A[wh] <- 0
A
      [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   11   16   21
[2,]    0    7   12   17   22
[3,]    3    0   13   18   23
[4,]    4    9    0   19   24
[5,]    5   10   15    0   25

I didn't check, but I assume your other examples would work similarly.
Please repost if I am wrong.

Cheers,
Bert

On Wed, Dec 4, 2024 at 4:39 AM Gerrit Eichner
<gerrit.eich...@math.uni-giessen.de> wrote:
Dear list,

is anyone aware of the following behavious of diag when used to replace
diagonals (plural!) of a matrix?

Small example: The following is documented and clearly to be expected:

A <- matrix(0, nrow = 5, ncol = 5)
diag(A) <- 1; A


BUT, what about the following? When executing the code of `diag<-` line
by line, it throws errors. So why does it work?

diag(A[-1, ]) <- 2; A

diag(A[-5, -1]) <- 3; A

diag(A[-5, -(1:2)]) <- 4; A


Any ideas?

   TIA and best regards  --  Gerrit

---------------------------------------------------------------------
Dr. Gerrit Eichner                   Mathematical Institute, Room 215
gerrit.eich...@math.uni-giessen.de   Justus-Liebig-University Giessen
Tel: +49-(0)641-99-32104          Arndtstr. 2, 35392 Giessen, Germany
https://www.uni-giessen.de/math/eichner

______________________________________________
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 https://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 https://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 https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to