LoginSignup
3
2

More than 3 years have passed since last update.

RstanにおけるCompilation Error : no such file or directoryの発生

Last updated at Posted at 2020-02-23

はじめに

確率的プログラミング言語に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でも問題はありませんでした。しかし、パッケージをアップデートさせるときは気を付けた方がいいですね :sweat:

追記

最近、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つ存在することになります)
なんじゃ、こりゃ

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2