Как использовать операторы if в отношении обращений матриц? - PullRequest
0 голосов
/ 27 сентября 2019

Все работает так, как я хочу, кроме окончательного оператора if.Я хочу, чтобы "Singular product" возвращался, если произведение X и Y не имеет обратного.

Ниже приведен код, который у меня есть, и он не работает для окончательных матриц.

question.five <- function(X,Y) {
if(is.matrix(X)==F) stop("X not matrix")
else { if(is.matrix(Y)==F) stop("Y not matrix")
else { if(ncol(X)!=nrow(Y)) stop("X and Y are not conformable")
else { if(solve(X%*%Y)==ERROR) stop("Singular product")
else on.exit(print(solve(X%*%Y)))
}}}}
X <- matrix(c(1,2,3,4),2,2)
Y <- c(1,2,3,4)
question.five(X,Y)
X <- matrix(c(1,3,4,5),2,2)
Y <- matrix(c(3,2,4,2,4,5,1,2,3),3,3)
question.five(X,Y)
X <- matrix(c(1,-1,-3,4),2,2)
Y <- matrix(c(4,1,3,1),2,2)
question.five(X,Y)

Итак, эта часть кода, с которой мне нужна помощь:

if(solve(X%*%Y)==ERROR) stop("Singular product")
...