返回一个带有"ifelse"的矩阵

Rui*_*Rui 4 if-statement r

我有两个矩阵:

mat <- matrix(1:6, 2, 3)
mat2 <- matrix(1:2, 2, 3)
Run Code Online (Sandbox Code Playgroud)

和一个参数

a <- 1
Run Code Online (Sandbox Code Playgroud)

使用ifelse,是否有可能在a某个值时返回矩阵?我正在使用的代码不起作用.例如:

mat.new <- ifelse(a == 1, mat, mat2)
Run Code Online (Sandbox Code Playgroud)

李哲源*_*李哲源 8

回报的长度完全取决于length(a == 1).另请参阅helpfile ?ifelse.您的代码只返回一个值.

ifelse目标矢量输入/输出.即使你得到正确的长度,比如说:ifelse(rep(TRUE, 6), mat, mat2)你得到一个向量而不是矩阵输出.因此matrix,重置维度的外部调用是必要的.


提示1:

对于你的例子,看起来像一个简单result <- if (a == 1) mat else mat2就足够了.无需触摸ifelse.

提示2:

要求ifelse返回矩阵并非不可能,但您必须通过列表保护它(记住列表是向量):

ifelse(TRUE, list(mat), list(mat2))
Run Code Online (Sandbox Code Playgroud)

但是,这很不方便.

  • @zx8754 Tip2,它实际上工作得很好。我举例说明的问题是我手中的(非常)简化版本。我需要从一组 5 个矩阵中选择一个矩阵,具体取决于“a”值。因此提示2,竖起大拇指 (2认同)