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

使用R语言Apollo包时出现undefined columns selected报错的解决咨询

问题:Apollo包执行apollo_validateInputs()时触发“undefined columns selected”报错

使用R语言的Apollo包构建出行方式选择模型,已成功从.txt文件导入数据,在定义apollo_fixed变量后执行apollo_validateInputs()函数时触发如下报错:

apollo_inputs = apollo_validateInputs()
Error in `[.data.frame`(database, , apollo_control$indivID) : undefined columns selected

完整代码如下:

rm(list = ls())
### Load libraries
library(apollo)
### Initialise code
apollo_initialise()

### Set core controls
apollo_control = list(
     modelName  ="MNL",
     modelDescr ="Simple MNL model on mode choice data",
     indivID    ="id")

# ####################################################### #
#### 2. Data loading                                   ####
# ####################################################### #

mydata <- read.table("/Documents/Travelmode_Final_project.txt", header=TRUE)
database = mydata
rm(mydata)

# ####################################################### #
#### 3. Parameter definition                           ####
# ####################################################### #

### Vector of parameters, including any that are kept fixed during estimation
apollo_beta=c(shuttlebus=0,
               citybus=0,
               bike=0, 
               ubike=0,
               motorbike=0,
               car=0,
               mrt=0,
               taxi=0,
               b_SB_TC=0,
               b_SB_TT=0,
               b_CB_TC=0,
               b_CB_TT=0,
               b_B_TC=0,
               b_B_TT=0,
               b_UB_TC = 0,
               b_UB_TT=0,
               b_M_TC=0,
               b_M_TT=0,
               b_C_TC=0,
               b_C_TT=0,
               b_MRT_TT=0, 
               b_MRT_TC=0,
               b_T_TT=0,
               b_T_TC=0)

apollo_fixed = c("shuttlebus")

# ####################################################### #
#### 4. Input validation                               ####
# ####################################################### #

apollo_inputs = apollo_validateInputs()
潜在原因
  • apollo_control配置中指定了indivID = "id",但导入的database数据框里不存在名为"id"的列。Apollo需要通过个体ID列识别不同观测主体,找不到对应列就会触发数据框索引错误。
解决方案
  • 方案1:检查并修改你的Travelmode_Final_project.txt文件,确保其中包含名为id的列(注意R对列名大小写敏感,要完全匹配),之后重新导入数据。
  • 方案2:如果数据中已有其他用于标识个体的列(比如person_id、user_id等),直接修改apollo_control里的indivID参数为实际存在的列名,示例:
    apollo_control = list(
         modelName  ="MNL",
         modelDescr ="Simple MNL model on mode choice data",
         indivID    ="person_id") # 替换为数据中真实的个体ID列名
    
  • 方案3:如果数据本身没有个体ID列,但每一行对应一个独立个体的观测,可手动添加ID列:
    database$id = 1:nrow(database)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:35:45