web-dev-qa-db-ja.com

Ubuntu 20.04ではGNU Rでsolve()関数を使用できません

昨日、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)
  1. 端末から呼び出されたRのコード、たとえばKonsoleを起動すると、セッションがフリーズします。
    • システムがフリーズする正確なタイミングは、solve()関数を実行したときです。
    • Htopによると、これが発生すると、私のCPUコアの1つが100%使用されます。
  2. RStudioのコンソール内で同じコードを起動すると、コードは期待どおりに機能します。ただし、RStudio内のターミナルを使用して呼び出すと、セッションがハングします。
  3. --VanillaでRを起動しても問題は解決しません。
  4. 外付けグ​​ラフィックカードを使用してPCを再起動し、aptにr-base-coreパッケージを再インストールし、別のターミナルエミュレーターで試しても役に立たない。
  5. Rのsolve()関数のドキュメントから、solve(A、B)は実際には2つの引数を取ることがわかります。Aは行列で、Bはベクトルまたは行列です。 Bがベクトルの場合、線形システムAx = Bを解きます。Bが行列の場合、AX = Bを解き、Xを返します。2番目の引数に何も指定されていない場合、Bとして適切なサイズの単位行列を自動的に仮定します。 線形システムを解く最初の関数は機能します。 2番目の引数として行列を指定すると、同じ問題が発生します。
  6. Qr.solve(A)でQR分解を使用しても、うまく機能します。

ここに私の質問があります:

  1. 誰か私と同じ問題がありましたか?
  2. この問題を解決する方法についての推奨事項も探します。

参考までに、デフォルトのaptリポジトリからインストールされたRバージョン3.6.3を使用しています。

読んでくれてありがとう、そして安全を守ってください!

pS Rに関連するWebサイトで関連情報やバグレポートが見つからなかったため、これはUbuntu固有の問題(または実際には特定のマシンの問題)だと思うので、このUbuntuコミュニティでこの質問をします。


実行可能な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/.
2
Ko Byeongmin

R-helpメーリングリストから非常に貴重なヘルプを受け取りました。これはlibopenblas0-pthreadパッケージのバグによるもので、libopenblas-pthread-devlibopenblas0-pthreadを削除し、-libopenblasをインストールすることで解決できます。 -openmp-dev

詳細については、2020年5月初旬のR-helpメーリングリストとdebian-scienceリストを参照してください。 https://lists.debian.org/debian-science/2020/04/msg00081.html =

1
Ko Byeongmin