I have two matrices:
mat <- matrix(1:6, 2, 3)
mat2 <- matrix(1:2, 2, 3)
and a parameter
a <- 1
using ifelse
, is it possible to return a matrix when a
is a certain value?
the code that I am using, does not work. For example:
mat.new <- ifelse(a == 1, mat, mat2)
The length of the return is completely decided by length(a == 1)
. See also the helpfile with ?ifelse
. Your code will only return a single value.
ifelse
targets vector input / output. Even if you get the length correct, say: ifelse(rep(TRUE, 6), mat, mat2)
, you get a vector rather than a matrix output. So an outer matrix
call to reset dimension is necessary.
Tip 1:
For your example, looks like a simple result <- if (a == 1) mat else mat2
is sufficient. No need to touch ifelse
.
Tip 2:
It is not impossible to ask ifelse
to return a matrix, but you have to protect it by a list (remember a list is a vector):
ifelse(TRUE, list(mat), list(mat2))
But, this is inconvenient.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With