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页示例。
问题根源
- 未指定
data参数:当time参数传入的是字符向量(即数据框的列名)时,msprep要求必须显式指定data参数,明确告知函数从哪个数据框读取这些列。移除keep参数时函数偶然能运行,是因为变量可能存在于全局环境,但这不是规范用法。 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
相关产品推荐
相关产品推荐

