はじめに
確率的プログラミング言語にStanというものがあり、Rでstanを使うためにRrstanというインターフェースがあります。問題なく使えていたのですが、最近、突然、Compilation Error : no such file or directoryがでてしまいました。どうやらstanのコンパイルエラーのようです。Rとパッケージ群をアンインストールして、再インストールし直したのですが、症状は直りません。ubuntu版のRでは問題は発生しませんでしたので、どうやらwindows版の問題かもしれません。
環境
・windows10pro
・R version3.6.2
・RStudio Version 1.2.5033
・rstan 2.19.3
症状
このようなエラーが出て止まります。
Error in compileCode(f, code, language = language, verbose = verbose) : Compilation ERROR, function(s)/method(s) not created!
g++.exe: error: Files/R/R-3.6.2/library/StanHeaders/include/stan/math/prim/mat/fun/Eigen.hpp: No such file or directory
・・以下省略・・
どうやらStanHeadersに問題がありそうです。
解決
ググって調べたところ、日本語サイトにはなく、英語のサイトに、似たような症状で困っている事例がありました。
https://discourse.mc-stan.org/t/compilation-error-with-stanheaders-no-such-file-or-directory/13007
このサイトによると、どうやらstanheadersのversionsの問題のようです。
使っていたstanheadersのversionsは2.21になっていました。そこで、サイトにしたがって次のとおり再インストールを試みました、
install.packages(c("rstan","StanHeaders"),type="source")
しかしながら、なぜかstanheadersのversionsのダウングレードはうまくいかず、インストールされませんでしたので、再びR、Rtoolsとパッケージをすべて消去、再インストールし、CRANを使わずに上記のコマンドを使ってパッケージを入れるとstanheadersのversions2.19.2が入り、無事に動くようになりました。
(パッケージは、プログラムフォルダ内のRフォルダ毎削除しました)
終わりに
エラーの原因はstanheadersとrstanのversionsの相性のようです。なぜかubuntu版のRでは最新のstanheadersのversionsでも問題はありませんでした。しかし、パッケージをアップデートさせるときは気を付けた方がいいですね
追記
最近、R version4.0.2にアップデートさせたら、
エラー: サイズ 14037.2 Gb のベクトルを割り当てることができません
と謎のエラーがでて、再び Stanが走らなくなりました。解決は結局、全てアンインストールの上、パッケージもフォルダ毎削除して、完全にRを消してしまってから、R version3.6.3 Rtools35 Rstudio の順に再インストールしてから、
install.packages(c("rstan","StanHeaders"),type="source") により(注:結構時間がかかる)治りました。
windows版RでRstanを動かそうと思うと、まだ最新版(version4.0.2)にはアップデートしない方がいいのかもしれません。
2020.8.18現在
windows版R(version4.0.2)でパッケージ‘StanHeaders’ version 2.21.0-6にアップデートできます。
これでwindows版R(version4.0.2)でRstanは正常に動きました!
また、Ubuntu版のRの話になりますが、(OS:Ubuntu 18.04.4 LTS)最新のR version4.0.2にしてRstanをインストールしようとすると次のような症状が発生します。
The downloaded source packages are in
‘/tmp/RtmpatLnqJ/downloaded_packages’
> library(lattice, lib.loc = "/usr/lib/R/library")
エラー: package or namespace load failed for ‘lattice’:
package ‘lattice’ was installed before R 4.0.0: please re-install it
もともとインストールされているSystem libraryであるlatticeがversion4.0に対応していないことが原因!?そんなことがあるの?
これだけ別途、User libraryにcranからインストールすると、正常にRstanもインストールでき、動きました。(従ってlatticeはSystem libraryとUser libraryで、2つ存在することになります)
なんじゃ、こりゃ