如何在R中使用cmdstanr从GitHub加载.stan模型文件
报错核心原因
cmdstan_model() 第一个入参默认接收本地.stan文件的路径,你直接传入读取到的stan代码文本向量时,函数会默认把文本第一行当作文件路径去检索,自然触发文件不存在的报错。
方案1:使用stan_code参数直接传入文本(推荐,无需写文件)
cmdstanr 0.4.0及以上版本支持直接传入代码文本,只需显式指定stan_code参数即可,同时加warn=FALSE消除读取文件的尾行警告:
%%R MyModel_URL <- url("https://github.com/laurabustamante/individual_differences_analysis_stan/blob/main/TwoStep_ITC_covar.stan?raw=true") MyModel_txt <- readLines(MyModel_URL, warn = FALSE) MyModel <- cmdstan_model(stan_code = MyModel_txt) # 验证模型加载正常 MyModel$print()
方案2:写入临时文件加载(兼容所有版本cmdstanr)
如果你的cmdstanr版本较低不支持stan_code参数,可以将读取到的文本写入临时.stan文件后加载,Colab的临时文件会在会话结束后自动清理,不会占用存储空间:
%%R MyModel_URL <- url("https://github.com/laurabustamante/individual_differences_analysis_stan/blob/main/TwoStep_ITC_covar.stan?raw=true") MyModel_txt <- readLines(MyModel_URL, warn = FALSE) # 创建临时stan文件 temp_stan <- tempfile(fileext = ".stan") writeLines(MyModel_txt, temp_stan) # 加载临时文件中的模型 MyModel <- cmdstan_model(temp_stan) # 验证模型加载正常 MyModel$print()
内容的提问来源于stack exchange,提问作者labusta
相关产品推荐
相关产品推荐

