我正在尝试从此官方tutorial运行经典的r-stan示例。但是我不能,因为我收到以下错误消息:
我使用的代码如下:
schools_dat <- list(J = 8,
y = c(28, 8, -3, 7, -1, 1, 18, 12),
sigma = c(15, 10, 16, 11, 9, 11, 10, 18))
fit <- stan(file = '8schools.stan', data = schools_dat,
iter = 1000, chains = 4)
我另外创建了8schools.stan文件,并嵌套了以下代码:
data {
int<lower=0> J; // number of schools
real y[J]; // estimated treatment effects
real<lower=0> sigma[J]; // s.e. of effect estimates
}
parameters {
real mu;
real<lower=0> tau;
real eta[J];
}
transformed parameters {
real theta[J];
for (j in 1:J)
theta[j] = mu + tau * eta[j];
}
model {
target += normal_lpdf(eta | 0, 1);
target += normal_lpdf(y | theta, sigma);
}
我想弄清楚此错误的原因以及如何避免此错误 。
我还要提及:
以下代码正确运行并返回10:
fx <-inline :: cxxfunction(signature(x =“ integer”,y =“ numeric”),' 返回ScalarReal(INTEGER(x)[0] * REAL(y)[0]); ) fx(2L,5)
我已经安装了Rtools的最新冻结版本。
将非常感谢您的帮助!
更新
我还按照Ben Goodrich的建议设置了Sys.setenv(USE_CXX14 = 1),但是现在我收到了以下错误消息
答案 0 :(得分:2)
这是一个临时性的问题,这是因为(本周)StanHeaders R软件包(需要C ++ 14)已在CRAN上被接受,但尚未使用rstan R软件包(使用C ++ 14进行编译)模型)。因此,暂时,您首先需要致电
Sys.setenv(USE_CXX14=1)
但是将来在任何地方阅读大量这篇文章的人都不太可能需要明确地这样做(rstan R软件包将在内部完成)。
在Windows上,您需要输入
CXX14=g++ -std=c++1y
CXX14FLAGS=-O3
到〜/ .R / Makevars文件中,但是在Mac上,这些行应该已经存在了。