返回一个带有“ifelse”的矩阵

时间:2016-10-31 10:08:40

标签: r if-statement

我有两个矩阵:

mat <- matrix(1:6, 2, 3)
mat2 <- matrix(1:2, 2, 3)

和参数

a <- 1

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

mat.new <- ifelse(a == 1, mat, mat2)

1 个答案:

答案 0 :(得分:8)

回报的长度完全取决于length(a == 1)。另请参阅?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))

但是,这很不方便。