昨天我将我的 Kubuntu 19.10 机器更新到了 20.04,到目前为止我对这次升级很满意。但是我在更新后发现我的 GNU R 安装存在一个严重问题,并请求您的帮助。
问题是,我无法在 GNU R 中使用solve()函数。具体来说,每当我尝试使用该函数反转矩阵时,控制台就会挂起。下面我将更详细地解释这种情况。
考虑一下代码
D = matrix(
data = c(1, 2, 3, 4),
nrow = 2,
ncol = 2,
byrow = TRUE
)
solve(D)
- 如果我从终端(比如 Konsole)启动 R 中的代码,会话就会冻结。
- 我知道系统冻结的确切时间是我执行solve()函数的时候。
- 根据 htop,当发生这种情况时,我的一个 CPU 核心的使用率已达到 100%。
- 如果我在 RStudio 的控制台中启动相同的代码,代码将按预期工作。但是,如果我使用 RStudio 中的终端调用它,会话就会挂起。
- 使用 --vanilla 启动 R 不能解决问题。
- 重新启动电脑、使用外部显卡、在 apt 中重新安装 r-base-core 包以及尝试使用不同的终端仿真器都无济于事。
- 从 R 中solve()函数的文档中可以看出,solve(A, B)实际上接受两个参数:A是矩阵,B是向量或矩阵。如果B是向量,则求解线性系统Ax = B。如果B是矩阵,则求解AX = B并返回X。如果第二个参数中未给出任何内容,则自动将适当大小的单位矩阵假定为B。解决线性系统的第一个函数起作用了。但是,如果我指定矩阵作为第二个参数,就会发生同样的问题。
- 使用 qr.solve(A) 的 QR 分解仍然效果很好。
以下是我的问题:
- 有人遇到过和我同样的问题吗?
- 我还寻求有关如何解决此问题的建议。
供您的信息,我正在使用从默认 apt 存储库安装的 R 版本 3.6.3。
感谢您的阅读,祝您身体健康!
附言:我在这个 Ubuntu 社区问这个问题是因为我相信这是一个 Ubuntu 特有的问题(或者实际上是我的特定机器的问题),因为我在 R 相关的网站上没有找到相关信息或错误报告。
从可执行 bash 脚本文件执行 N0rbert 的代码时,会话在 resolve(D) 处挂起。
kobyeongmin@odie:~/Temp$ ./r-test.sh
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> D = matrix(
+ data = c(1, 2, 3, 4),
+ nrow = 2,
+ ncol = 2,
+ byrow = TRUE
+ )
> solve(D)
另外,这里是 which R 和 R -- version 的输出:
kobyeongmin@odie:~$ which R
/usr/bin/R
kobyeongmin@odie:~$ R --version
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
https://www.gnu.org/licenses/.
答案1
我从 R-help 邮件列表中获得了宝贵的帮助。这是由于 libopenblas0-pthread 包中的一个错误,可以通过删除来解决libopenblas-pthread-dev和libopenblas0-pthread并安装libopenblas-openmp-dev。
有关更多信息,请参阅 2020 年 5 月初左右的 R-help 邮件列表以及 debian-science 列表:https://lists.debian.org/debian-science/2020/04/msg00081.html