You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行RStan教程示例失败:报错原因及解决方法咨询

问题描述

已成功安装RStan并加载该库,尝试运行RStan官方入门的「八校问题」示例,执行以下代码:

fit1 <- stan(
  file = "schools.stan",  # Stan program
  data = schools_data,    # named list of data
  chains = 4,             # number of Markov chains
  warmup = 1000,          # number of warmup iterations per chain
  iter = 2000,            # total number of iterations per chain
  cores = 1,              # number of cores (could use one per chain)
  refresh = 0             # no progress shown
)

后出现如下错误:

Error in compileCode(f, code, language = language, verbose = verbose) : 
  C:\rtools42\x86_64-w64-mingw32.static.posix\bin/ld.exe: file1c34165764a4.o:file1c34165764a4.cpp:(.text$_ZN3tbb8internal26task_scheduler_observer_v3D0Ev[_ZN3tbb8internal26task_scheduler_observer_v3D0Ev]+0x1d): undefined reference to `tbb::internal::task_scheduler_observer_v3::observe(bool)'C:\rtools42\x86_64-w64-mingw32.static.posix\bin/ld.exe: file1c34165764a4.o:file1c34165764a4.cpp:(.text$_ZN3tbb10interface623task_scheduler_observerD1Ev[_ZN3tbb10interface623task_scheduler_observerD1Ev]+0x1d): undefined reference to `tbb::internal::task_scheduler_observer_v3::observe(bool)'C:\rtools42\x86_64-w64-mingw32.static.posix\bin/ld.exe: file1c34165764a4.o:file1c34165764a4.cpp:(.text$_ZN3tbb10interface623task_scheduler_observerD1Ev[_ZN3tbb10interface623task_scheduler_observerD1Ev]+0x3a): undefined reference to `tbb::internal::task_scheduler_observer_v3::observe(bool)'C:\rtools42\x86_64-w64-mingw32.static.posix\bin/ld.exe: file1c34165764a4.o:file1c34165764a4.cpp:(.text$_ZN3tbb10interface
Error in sink(type = "output") : invalid connection

运行example(stan_model, run.dontrun=T)也出现相同错误。

错误解读

这个错误是链接器(ld.exe)无法找到Intel TBB(线程构建模块)库的相关函数定义,TBB是RStan依赖的并行计算库。本质是编译Stan代码时,链接器无法正确关联到TBB库的函数实现,和PATH无关(因为链接器已经被找到并执行),大概率是RStan与Rtools版本不匹配、TBB库损坏,或是编译配置异常导致的。

解决方法
  • 检查并对齐版本:运行packageVersion("rstan")确认RStan版本,RStan 2.26及以上版本需要搭配Rtools42,若版本不匹配,卸载现有RStan后重装对应版本。
  • 重置RStan编译配置:先执行remove.packages("rstan"),删除~/.R/Makevars文件(Windows路径为C:\Users\<你的用户名>\.R\Makevars),再重新安装RStan:install.packages("rstan", repos = c("https://mc-stan.org/r-packages/", getOption("repos")))
  • 临时禁用TBB并行:在运行Stan代码前执行Sys.setenv(STAN_THREADS = FALSE),强制关闭并行编译,绕开TBB依赖问题,适合临时测试。
  • 重新安装Rtools:卸载现有Rtools42,从官方渠道重新下载安装,安装时务必勾选“Add to PATH”选项,安装完成后重启R,运行system("g++ --version")验证编译器可正常调用。
  • 清理编译缓存:删除~/.Rcpp和~/.cache/R/StanHeaders目录下的缓存文件,重启R后再尝试运行示例代码。

内容的提问来源于stack exchange,提问作者Ruben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:25:52