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

为何我使用R中choiceRT_ddm函数时会出现RTu[i, 1:Nu[i]]报错

报错原因说明

你猜测的「不同被试响应数量不一致」是间接诱因,该报错的核心触发逻辑是choiceRT_ddm(hBayesDM包内置函数)预分配的矩阵长度,和被试某类选择的实际反应时数量不匹配,常见场景有两种:

  1. 某名/多名被试在删除缺失值后,仅保留了单类选择的试次(要么全是choice=1,要么全是choice=2),导致筛选choice==2的反应时的时候返回空向量,和预分配的长度无法匹配
  2. choice列的编码不符合函数要求,函数默认要求choice取值仅为1和2,若存在0、3等其他编码,会导致分类计数错误

choiceRT_ddm本身支持不同被试的总试次不一致,只要每个被试都同时包含两类选择的有效试次,总试次不均不会触发报错。

解决步骤

  1. 检查是否存在单类选择的被试
    运行以下代码统计每个被试的两类选择数量,筛出只有单类选择的被试:
library(dplyr)
DDM2 %>% 
  group_by(subjID) %>% 
  summarise(
    n_choice1 = sum(choice == 1, na.rm = T),
    n_choice2 = sum(choice == 2, na.rm = T)
  ) %>% 
  filter(n_choice1 == 0 | n_choice2 == 0)

如果有输出结果,将对应被试从数据集中剔除,或补全该被试的两类有效试次即可。

  1. 校验choice列的编码规范
    运行代码确认choice列的取值仅为1和2,若存在其他值需重新编码:
# 查看choice所有唯一取值
unique(DDM2$choice)
# 示例:如果取值为0和1,重编码为1和2
DDM2$choice <- ifelse(DDM2$choice == 0, 1, 2)
  1. 过滤无效反应时
    提前剔除小于0.1s的异常反应时,避免计数错误:
DDM_clean <- DDM2 %>% filter(RT > 0.1)

处理完成后再运行choiceRT_ddm函数即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:27:03