首页 > 解决方案 > 将变量分配给 coxph 函数

问题描述

df.t <- structure(list(hsa_miR_105_5p = c(3.58497328179801, 5.73145238130165, 
1.19037294682376, -1.28586123284671, 1.27004401721869, 0.958088884635556
), hsa_miR_17_3p = c(1.21345556145455, 4.71642723353062, 5.87616915208789, 
0.776249937585565, 4.86437477300888, 1.71876771352689), hsa_miR_3916 = c(6.74863569372315, 
3.23155618956527, -0.105259761381448, -1.28586123284671, 4.60953338597123, 
2.95060221832751), hsa_miR_1295a = c(-1.35668910756094, 0.147551018264645, 
2.44220202218853, -1.28586123284671, 5.47367734142336, -0.135507425889107
)), row.names = c("86", "175", "217", "394", "444", "618"), class = "data.frame")

Time <- structure(c(1796, 1644.04166666667, 606.041666666667, 1327.04166666667, 
665, 2461), class = "difftime", units = "days")

Status <- c(0L, 0L, 1L, 0L, 1L, 0L)

FML <- as.formula(paste0('~',paste(colnames(df.t),collapse = '+')))

使用此输入我想使用 FML 对象作为 cox 模型中的输入,但是,这不起作用。如何定义要被识别的 FML 对象coxph

coxph(Surv(Time, Status) FML, data = df.t)

标签: rformula

解决方案


要结合这两个公式,您可以使用update.formula. 例如

update.formula(Surv(Time, Status)~., FML)
# Surv(Time, Status) ~ hsa_miR_105_5p + hsa_miR_17_3p + hsa_miR_3916 + 
#    hsa_miR_1295a

所以你可以在你的函数中使用它

coxph(update.formula(Surv(Time, Status)~., FML), data = df.t)

这将返回与

coxph(Surv(Time, Status) ~ hsa_miR_105_5p + hsa_miR_17_3p + hsa_miR_3916 + 
  hsa_miR_1295a, data = df.t)

推荐阅读