我想在mahanalobis函数中将solve()
替换为ginv()
。
有没有办法强制R中的任何函数使用ginv()
代替solve()
?
答案 0 :(得分:2)
mahalanobis
功能非常简单。为什么不用适当的替代来定义自己的替代品,即
mahalanobis_ginv <- function (x, center, cov,
inverted = FALSE, ...) {
x <- if (is.vector(x))
matrix(x, ncol = length(x))
else as.matrix(x)
if (!identical(center, FALSE))
x <- sweep(x, 2L, center)
if (!inverted)
cov <- MASS::ginv(cov, ...)
setNames(rowSums(x %*% cov * x), rownames(x))
}
来自?mahalanobis
:
ma <- cbind(1:6, 1:3)
(S <- var(ma))
mahalanobis(c(0, 0), 1:2, S) ## 5.37037
mahalanobis_ginv(c(0, 0), 1:2, S) ## 5.37037
答案 1 :(得分:0)
您可以输入 trace(mahalanobis, edit = T) 并进行必要的替换。当点击保存时,对函数所做的更改将只存储在当前 R 会话中。