【发布时间】:2016-04-05 09:59:53
【问题描述】:
我不是高级 R 用户。我主要用它来进行矩阵代数计算。我有一个大矩阵(9400 x 9400;675.1 MB),我很想反转它。我试过“解决”函数和“chol2inv”,我得到“错误...'a'必须是一个复杂的矩阵”。我也尝试过使用 MASS 包中的“ginv”函数,我收到错误消息“svd(X) 中的错误:'x' 中的无限或缺失值”。 我确定我的矩阵没有空(全零)列或行。我已经检查过: Remove columns with zero values from a dataframe 和我得到相同的矩阵。也没有 NA 值,我使用Determine the number of NA values in a column 进行了测试。我的矩阵是数字和方阵(“is.numeric”和“is.matrix”答案为 TRUE,“dim”9400x9400)。当使用 matrixcalc 包中的“is.singular.matrix”时,错误消息再次是 Error in determinant.matrix(x, logarithm = TRUE, ...) : 'a' 必须是复矩阵。因此,我不知道为什么 R 不能计算反转。请问,你知道我该如何解决我的问题吗?非常感谢
【问题讨论】:
-
也许this question 有帮助...无论如何,我知道你不能发布这样的位矩阵,但如果你的问题是可重现的,那么帮助你有点困难。此外,也许如果您发布了代码,即使它只是函数调用。谢谢
-
Fortune 260 可能是相关的。
-
你检查过
M[!is.finite(M)]吗? -
我无法重现您的问题。对我来说它有效:
set.seed(42); x <- matrix(rnorm(9400L*9400L), 9400, 9400); y <- solve(x)但计算需要 1 小时。我使用了没有任何 GUI 的纯 R 命令行。
标签: r