[R] Confusing fori or ifelse result in matrix manipulation

Ivan Krylov kry|ov@r00t @end|ng |rom gm@||@com
Mon Apr 25 10:49:22 CEST 2022

В Sun, 24 Apr 2022 17:05:55 +0200
Uwe Freier <uwe using freier.de> пишет:

> ifelse(x[i] == 0, A[,i], 0)

Hint: what does ifelse return instead of a vector of length nrow(A)?

Since you're checking conditions of length 1, you can safely use `if
(x[i] == 0) A[,i] else 0` here, or you can transform the `x` vector
into a boolean matrix of the correct shape to guide the substitution:

X <- matrix(as.logical(x), nrow(A), ncol(A), byrow = TRUE)
ifelse(X, 0, A)

Best regards,

More information about the R-help mailing list