Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

はじめに

確率的プログラミング言語に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つ存在することになります)
なんじゃ、こりゃ

kenkenvw
非ITエンジニアです。病害虫防除所という農業関係の仕事をしています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away