我想要找到“如果矩阵b是非奇异矩阵,则求b的逆,否则如果找到b的广义逆”
所以我做了这样的陈述。但它并没有起作用。
a<-c(1:9)
a
b<-matrix(a,3,3)
b
library(MASS)
ifelse(ncol(b)==nrow(b),(ifelse(det(b)==0,ginv(b),solve(b)),ginv(b))
然后我像这样修改了语句
a<-c(1:9)
a
b<-matrix(a,3,3)
b
library(MASS)
d<-ifelse(det(b)==0,ginv(b),solve(b))
e<-ginv(b)
ifelse(ncol(b)==nrow(b),d,e)
但答案只是b的广义逆的row=1,col=1值。
请帮帮我...
发布于 2013-05-12 02:38:58
你有一个迷路的(
ifelse(ncol(b)==nrow(b),ifelse(det(b)==0,ginv(b),solve(b)),ginv(b))
## [1] -0.6388889
请注意,您不需要为此使用ifelse
。ncol(b)==nrow(b)
不返回向量,det(b)==0
也不返回向量。
发布于 2013-05-12 02:41:13
要回答您的问题,请使用简单的if
和else
语句返回值。替换
d <- ifelse(det(b)==0,ginv(b),solve(b))
e <- ginv(b)
ifelse(ncol(b)==nrow(b),d,e)
通过以下方式:
d <- if(det(b)==0) ginv(b) else solve(b)
e <- ginv(b)
if(ncol(b)==nrow(b)) d else e
## [,1] [,2] [,3]
## [1,] -0.6388889 -5.555556e-02 0.5277778
## [2,] -0.1666667 -9.234353e-17 0.1666667
## [3,] 0.3055556 5.555556e-02 -0.1944444
https://stackoverflow.com/questions/16503607
复制