我有两个矩阵:
mat <- matrix(1:6, 2, 3)
mat2 <- matrix(1:2, 2, 3)
和一个参数
a <- 1
使用ifelse
,当a
等于某个值时能否返回一个矩阵?
我正在使用的代码不起作用。例如:
mat.new <- ifelse(a == 1, mat, mat2)
我有两个矩阵:
mat <- matrix(1:6, 2, 3)
mat2 <- matrix(1:2, 2, 3)
和一个参数
a <- 1
使用ifelse
,当a
等于某个值时能否返回一个矩阵?
我正在使用的代码不起作用。例如:
mat.new <- ifelse(a == 1, mat, mat2)
返回的长度完全由 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))
但是,这很不方便。
myList <- list(mat, mat2, mat3, etc); mat.new <- myList[[a]]
进行访问。 - zx8754