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

构建mlogit数据框时遇Error in names(data)[ix]错误求助

解决dfidx函数报错"Error in names(data)[ix] : invalid subscript type 'language'"

错误核心原因

你传入dfidx的varying参数是sort——这是一个R内置函数(属于language类型),但dfidx要求该参数必须是备选方案对应的变量名字符向量。当函数尝试用这个语言对象作为下标去提取数据列名时,就会触发该错误。

解决方案

1. 修正varying参数

明确指定与出行方式备选方案相关的变量列名,比如你数据中对应自驾、公交、步行等方式的属性变量(如时间、成本等)。示例:

# 假设数据中不同出行方式的变量以car_、transit_、walk_开头
mode_attributes <- grep("^(car|transit|walk)_", names(nydata), value = TRUE)

如果变量名是固定的,也可以直接手动列出:

mode_attributes <- c("car_time", "transit_cost", "walk_distance")

2. 处理dplyr可能导致的兼容性问题

如果你用dplyr处理过数据集,大概率得到的是tibble格式,而dfidx对base R的data.frame兼容性更好,先转换数据类型:

nydata <- as.data.frame(nydata)

3. 重新调用dfidx

用修正后的参数执行:

nydata_df <- dfidx(nydata, shape = "wide", choice = "work_mode", varying = mode_attributes)

额外排查步骤

  • 先打印varying参数的内容,确认是字符向量而非函数/其他对象:print(mode_attributes)
  • 检查work_mode列是否是因子或字符类型,且所有取值都能对应到varying参数指定的备选方案

内容的提问来源于stack exchange,提问作者Thomas E.M. Schlesinger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:30:47