r - 在多个预测变量上循环 Cox 回归模型

标签 r

我需要为几个变量运行cox回归模型,所以我想写一个循环来实现它。 但它无论如何都行不通。 下面是我使用的代码

names(Gen) 
varlist <- names(hsb2)[8:11]  ## get the variables i want to involve in loop
models <- lapply(varlist, function(x) {
    coxph(substitute(Surv(Time, Status) ~ i, list(i = as.name(x))), data = Gen, ties="efron")
})

我得到的错误信息是

errors in terms.default(formula, special, data = data) : 
  no terms component nor attribute

有人知道如何解决这个问题或如何编写代码吗?

最佳答案

因为模型以有趣的方式评估他们的公式,所以您最好创建一个字符串并将其转换为公式使用reformulate,如 Is there a better alternative than string manipulation to programmatically build formulas? 而不是 substitute。 (reformulate 通常更可取,因为它测试输入的句法正确性,但在这种情况下它会破坏响应变量。)

创建这个临时函数:

tmpfun <- function(x) as.formula(paste("Surv(Time,Status)",x,sep="~"))

提供给 lapply 的函数体可以是:

coxph(tmpfun(x), data = Gen, ties="efron")

(您没有提供可重现的示例,但我认为这应该可行...)

为了额外的(但完全没有必要)酷,你可以尝试用两个单独的 lapply 调用替换整个 lapply 调用,一个是从变量中创建一个公式列表名称列表,以及一个从公式列表中列出拟合模型的列表。

formlist <- lapply(varlist,tmpfun)
models <- lapply(formlist,data=Gen,ties="efron")

关于r - 在多个预测变量上循环 Cox 回归模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092923/

相关文章:

java - 来自java的JRI R集成,某些语句不起作用?

r - 进程替换

r - 动态重新定义一个函数,比如 print.data.frame

r - 对变量不匹配求和

r - 将数学符号和下标与常规字母混合

function - R 中的内置函数通常是否经过优化?

r - 如何在R中创建分布矩阵

r - 带有 stat_binhex 的 map 上的六边形热图给出错误 : geom_hex() only works with Cartesian coordinates

r - 计算一行的某些单元格中有多少个值不是 NA(在 R 中)

r - 所有变量的独立性卡方检验