昨天我将我的 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)
- 如果我在 R 中启动从终端调用的代码,比如 Konsole,会话将冻结。
- 我知道系统冻结的确切时间是我执行solve()函数的时候。
- 根据 htop,当这种情况发生时,我的一个 CPU 内核被 100% 使用。
- 如果我在 RStudio 的控制台中启动相同的代码,代码会按预期工作。但是,如果我使用 RStudio 中的终端调用它,会话就会挂起。
- 使用 --vanilla 启动 R 并不能解决问题。
- 重新启动 PC,使用我的外部显卡,在 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。
感谢您的阅读,并保持安全!
ps 我在这个 Ubuntu 社区提出这个问题,因为我认为这是一个特定于 Ubuntu(或者实际上是我的特定机器的问题)的问题,因为我在 R 相关网站中没有找到相关信息或错误报告。
从可执行的 bash 脚本文件执行 N0rbert 的代码,会话在solve(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)
此外,这里是哪个 R 和 R -- 版本的输出:
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/.
我从 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