[R] Confusing fori or ifelse result in matrix manipulation

Uwe Freier uwe @end|ng |rom |re|er@de
Sun Apr 24 17:05:55 CEST 2022


Hello,

sorry for the newbie question but I can't find out where I'm wrong.

A <- matrix(1:9,ncol=3)
x <- c(0,1,0)
M <- matrix(ncol=3,nrow=3)
for(i in 1:3) {
  M[,i] <- ifelse(x[i] == 0, A[,i], 0)
}

expected:

> M
      [,1] [,2] [,3]
[1,]    1    0    7
[2,]    2    0    8
[3,]    3    0    9


but the result is:

> M
      [,1] [,2] [,3]
[1,]    1    0    7
[2,]    1    0    7
[3,]    1    0    7


If I do it "manually":

> M[,1] <- A[,1]
> M[,2] <- 0
> M[,3] <- A[,3]

M is as expected, where is my misconception?

Thanks for any hint and best regards,

Uwe



More information about the R-help mailing list