在 R 中编码时,我发现该函数svd()
有时可能会抛出错误消息:
Error in La.svd(x, nu, nv) : error code 1 from Lapack routine 'dgesdd'.
在谷歌中搜索了一些信息,结果发现这个错误意味着使用的算法svd()
没有收敛。很多人也遇到了同样的错误信息,我尝试了他们使用的许多方法,但没有一种方法能正常工作,例如使用 parameter LINPACK = TRUE
,舍入矩阵甚至使用propack.svd()
and trlan.svd()
。
我的输入数据是一个矩阵,对角线条目等于 1,其他条目为 0 或相对较小。我猜这个错误与数值精度有关,所以我尝试将矩阵四舍五入round(matrix,6)
。这有时会有所帮助,但不能从根本上解决问题,我担心这种四舍五入会导致一些有偏见的结果。
如果有人能告诉我如何解决这个问题,我将不胜感激。