我有两个矩阵:
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)
回报的长度完全取决于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)
但是,这很不方便.