我有两个矩阵:
mat <- matrix(1:6, 2, 3)
mat2 <- matrix(1:2, 2, 3)
和参数
a <- 1
使用ifelse
,当a
是某个值时,是否可以返回矩阵?
我正在使用的代码不起作用。例如:
mat.new <- ifelse(a == 1, mat, mat2)
答案 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))
但是,这很不方便。