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

使用ChoiceModelR估计分层贝叶斯选择模型时遇directory参数缺失报错

解决ChoiceModelR包choicemodelr()函数的"directory参数缺失"报错

在使用ChoiceModelR包估计分层贝叶斯选择模型时,其余代码段运行正常,但执行hb.post相关语句时触发报错:

Error in `choicemodelr()`:
! argument "directory" is missing, with no default
Backtrace:
 1. ChoiceModelR::choicemodelr(...)
 3. base::paste(directory, "/", "RLog.txt", sep = "")
Execution halted
Warning message:
In sink() : no sink to remove

问题代码

choice <- rep(0, nrow(cbc.df))
choice[cbc.df[,"alt"]==1] <- cbc.df[cbc.df[,"choice"]==1,"alt"]
head(choice)

cbc.coded <- model.matrix(~ cereal_label + bill + quantity + price, data = cbc.df)
cbc.coded <- cbc.coded[, -1] # remove the intercept

choicemodelr.data <- cbind(cbc.df[,1:3], cbc.coded, choice)
head(choicemodelr.data)

cerealpool <- cbc.df$cerealpool[cbc.df$ques==1 & cbc.df$alt==1]=="yes"
cerealpool <- as.numeric(cerealpool)
choicemodelr.demos <- as.matrix(cerealpool, nrow=length(cerealpool))
str(choicemodelr.demos)

library(ChoiceModelR)
hb.post <- choicemodelr(data=choicemodelr.data, xcoding=rep(1, 7), 
                        demos=choicemodelr.demos, 
                        mcmc=list(R=20000, use=10000),
                        options=list(save=TRUE))

names(hb.post)

解决方案

  • 报错原因:当设置options=list(save=TRUE)时,choicemodelr()函数需要通过directory参数指定保存MCMC输出文件(如RLog.txt)的路径,该参数无默认值,必须手动传入。
  • 两种解决方式:
    1. 指定保存目录:
      • 先确认目标目录,可通过getwd()查看当前工作目录,或自定义路径(如"~/cmr_results");若目录不存在,需先创建:dir.create("~/cmr_results", recursive=TRUE)
      • 在函数调用中添加directory参数:
        hb.post <- choicemodelr(data=choicemodelr.data, xcoding=rep(1, 7), 
                               demos=choicemodelr.demos, 
                               mcmc=list(R=20000, use=10000),
                               options=list(save=TRUE),
                               directory = getwd()) # 或替换为自定义路径
        
    2. 关闭保存功能:
      • 若不需要保存输出文件,将options=list(save=TRUE)修改为options=list(save=FALSE),此时无需传入directory参数:
        hb.post <- choicemodelr(data=choicemodelr.data, xcoding=rep(1, 7), 
                               demos=choicemodelr.demos, 
                               mcmc=list(R=20000, use=10000),
                               options=list(save=FALSE))
        

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:06:00