为什么Survival :: tmerge突然给出错误“既未找到tstop参数,也未找到初始事件参数”?

问题描述

我正在尝试运行以下代码,包括 survival :: tmerge()以进行随时间变化的协变量进行生存分析,但我总是会收到错误消息

tmerge(df.merge%>%select(CODE98,id),df.long,id = CODE98,错误: 既没有找到tstop参数,也没有找到初始事件参数>

几个月前,我写了这段代码,它工作正常。我注意到将R更新到4.0.2版后,它开始出现错误

df <- 
structure(list(CODE98 = structure(c(4,8,9,10,13,17,18,19,20,23,26,28,30,32,33,35,37,38,41,42,45,46,47,49,50,51,53,54,56,59,61,62,65,68,69,70,72,73,77,78,80,82,84,86,87,88,89,90,91,93),label = "Subject ID code/Codice di soggetto"),X_DATEL = structure(c(10653,10744,10533,10735,10611,10556,10764,10673,10751,10541,10576,10610,10625,10709,10667,10534,10540,10646,10715,10632,10757,10589,10618,10569,10638,10701,10681,10743,10666,10555,10680,10604,10520,10694,10736,10749,10730,10695
               ),label = "Date of Baseline fasting blood/urine",format.sas = "DATE",class = "Date"),Y_DATEL = structure(c(11797,NA,11748,11792,11734,11773,11779,11811,11769,11790,11699,11839,11783,11741,11786,11804,11837,11850,11781,11809,11825,NA),label = "Date of Followup 1 fasting blood/urine",Z_DATEL = structure(c(12934,12957,12901,12832,12964,12920,12831,12874,12861,12944,12896,12824,12969,12891,12852,12878,12962,12885,12884,13277,12922,12857,12772,12950,13284,12934,label = "Date of Followup 2 fasting blood/urine",Q_DATEL = structure(c(13934,13977,13976,14039,13948,13934,13969,14057,13906,13941,14046,13993,13973,13978,13990,13945,14026,13913,13927,13864,13920,13955,14028),label = "Date of Followup 3 fasting blood/urine",C_DATEL = structure(c(NA,15888,15860,15922,16003,15873,16016,15965,15980,15952,15869,15868),label = "Date of Followup 4 fasting blood/urine",X_AGEL = structure(c(79,83,81,74,75,71,66,67,85,80),label = "Age at Baseline fasting blood/urine(yrs)"),Y_AGEL = structure(c(82,76,label = "Age at Followup 1 fasting blood/urine(yr"),Z_AGEL = structure(c(85,79,94,label = "Age at Followup 2 fasting blood/urine(yr"),Q_AGEL = structure(c(88,93,92,89),label = "Age at Followup 3 fasting blood/urine(yr"),C_AGEL = structure(c(NA,100,94),label = "Age at Followup 4 fasting blood/urine(yr"),X_GPT = structure(c(20,16,11,12,15,139,14,6,21,29,22,24,17),label = "BL GPT (also known as ALT) (U/L)"),Y_GPT = structure(c(13,25,141,label = "F1 GPT (also known as ALT) (U/L)"),Z_GPT = structure(c(12,label = "F2 GPT (also known as ALT) (U/L)"),Q_GPT = structure(c(16,60,247,7,34),label = "F3 GPT (also known as ALT) (U/L)"),C_GPT = structure(c(NA,21),label = "F4 GPT (also known as ALT) (U/L)",format.sas = "BEST"),X_GOT = structure(c(17,55,24),label = "BL GOT (also known as AST) (U/L)"),Y_GOT = structure(c(12,31,label = "F1 GOT (also known as AST) (U/L)"),Z_GOT = structure(c(8,label = "F2 GOT (also known as AST) (U/L)"),Q_GOT = structure(c(13,311,36),label = "F3 GOT (also known as AST) (U/L)"),C_GOT = structure(c(NA,28),label = "F4 GOT (also known as AST) (U/L)",DATA_ULT = structure(c(17395,13372,15951,11908,11600,15237,12312,14941,16578,12355,15988,17139,16059,15955,15891,15672,15986,10828,16751,15838,16043,15917,13338,16049,13072,13412,14158,14719,11697,14984,13668,17257,11534,15277,16217,13525,13405,17254,11334,14777,11737,12711,13352,14321,15958,16021,16941
               ),label = "Date of Last Contact as of FUP4 or death",DECEASED = structure(c(1,1,1),label = "Deceased?/Deceduto(a)?")),row.names = c(NA,-50L),class = c("tbl_df","tbl","data.frame"))


df.long <- df %>% pivot_longer(cols = c(ends_with("DATEL"),ends_with("AGEL"),ends_with("GPT"),ends_with("GOT")),names_to = c("time",".value"),names_sep = "(?<=[XYZQC])_",values_drop_na = TRUE) %>% 
  select(CODE98,DATEL,AGEL,GPT,GOT)

df.merge <- tmerge(df,df,id=CODE98,tstart=as.numeric(X_DATEL),tstop=as.numeric(DATA_ULT),deceased=event(as.numeric(DATA_ULT),DECEASED))

df.merge <- tmerge(df.merge %>% select(CODE98,id),df.long,age=tdc(as.numeric(DATEL),AGEL),gpt=tdc(as.numeric(DATEL),GPT),got=tdc(as.numeric(DATEL),GOT))

任何人都可以了解发生了什么吗? 在此先感谢

解决方法

由Terry Therneau教授通过电子邮件解决:

当您链接了tmerge语句时,第二,第三等应具有tmerge输出作为第一个参数。您无法操纵它,然后在中间捡起它。您可以将变量列表限制为第一个tnerge调用的第一个arg(我经常这样做),但此后不可以。 我很难相信该代码曾经奏效。 例如,这可行。>

df.merge <- tmerge(df%>% select(CODE98),df,id=CODE98,tstart=as.numeric(X_DATEL),tstop=as.numeric(DATA_ULT),deceased=event(as.numeric(DATA_ULT),DECEASED))

df.merge <- tmerge(df.merge,df.long,age=tdc(as.numeric(DATEL),AGEL),gpt=tdc(as.numeric(DATEL),GPT),got=tdc(as.numeric(DATEL),GOT))
,

今天也遇到了同样的问题,并通过此线程解决了。提出这个问题并与Therneau教授取得联系,三声欢呼。大包装和小插图。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...