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

RStudio中msprep函数报错求助:新手无法理解错误信息

msprep函数报错排查:缺失data参数问题

报错信息

Error in msprep(time = c(NA, "c1t", "l1t"), status = c(NA, "c1", "l1"), : missing "data" argument not allowed when time argument is character vector.

问题背景

使用mstate包的msprep函数转换竞争风险数据时,添加keep参数后触发报错,移除该参数则函数正常运行。代码参考自Dirk Moore 2016年著作《Applied Survival Analysis using R》第131页示例。

问题根源

  1. 未指定data参数:当time参数传入的是字符向量(即数据框的列名)时,msprep要求必须显式指定data参数,明确告知函数从哪个数据框读取这些列。移除keep参数时函数偶然能运行,是因为变量可能存在于全局环境,但这不是规范用法。
  2. keep参数格式错误:keep参数不需要用data.frame()包裹,正确用法是直接传入要保留的列名字符向量。

修正后的代码

将原msprep调用替换为:

hepato.long <- msprep(time = c(NA, 'c1t', 'l1t'),
                      status = c(NA, 'c1', 'l1'),
                      keep = c('afp', 'tumorsize', 'cxcl17p'),
                      trans = tmat,
                      data = hc)

验证说明

修正后,msprep会正确从hc数据框读取指定的时间、状态列,并保留afp、tumorsize、cxcl17p三个协变量,输出符合预期的msdata格式对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:49:58