【问题标题】:Missing function(x) in defined function定义的函数中缺少函数 (x)
【发布时间】:2016-02-22 13:28:29
【问题描述】:

我明白以下内容

aa <- sapply(c("BMI","KOL"),function(x) as.formula(paste('Surv(BL_AGE,CVD_AGE,INCIDENT_CVD) ~', paste(colnames(s)[c(21,259,330,380)], collapse='+'))))

我想念x 但我真的不明白如何以及在哪里插入它是正确的。 感谢您的帮助。

【问题讨论】:

  • 你能详细说明你想做什么吗?
  • 我会尝试.. 我尝试将Surv(BL_AGE,CVD_AGE,INCIDENT_CVD) ~SUKUP+HDL+SYSTM+PREVAL_DIAB, data=c 应用于我的数据框的两列 (BMI and KOL)。我希望 aa 给我返回类似 Surv(BL_AGE,CVD_AGE,INCIDENT_CVD) ~BMI+SUKUP+HDL+SYSTM+PREVAL_DIAB, data=cSurv(BL_AGE,CVD_AGE,INCIDENT_CVD) ~KOL+SUKUP+HDL+SYSTM+PREVAL_DIAB, data=c 的东西。但是我只有$BMI Surv(BL_AGE, CVD_AGE, INCIDENT_CVD) ~ SUKUP + HDL + SYSTM + PREVAL_DIAB $KOL Surv(BL_AGE, CVD_AGE, INCIDENT_CVD) ~ SUKUP + HDL + SYSTM + PREVAL_DIAB
  • 抱歉,我将能够重现示例数据。我只是想不通我想念x
  • 很难理解你的问题。

标签: r function sapply


【解决方案1】:

由于文本量大,将其作为答案而不是评论。

如果我对您的理解正确,您正在尝试迭代一个变量列表,您希望将这些变量列表(依次)添加到生存模型中的一组自变量中。您提供的代码中的问题是您没有给x 一个位置。有几种方法可以做到这一点。

第一个与您正在做的非常相似,并创建公式。我使用“癌症”数据集证明了这一点:

library(survival)
data(cancer)

myvars <- c("meal.cal","wt.loss")

a1 <- sapply(myvars,function(x){
  as.formula(sprintf("Surv(time, status)~age+sex+%s",x))
}
)
#then we can fit our models
lapply(a1,function(x){coxph(formula=x,data=cancer)})

在我看来,这有点复杂,可以一步完成:

models <- lapply(myvars, function(x){
  form <- as.formula(sprintf("Surv(time, status)~age+sex+%s",x))
  fit <- coxph(formula=form, data=cancer)
  return(fit)
})

使用您开始使用的代码,我们可以简单地将“x”添加到因变量的向量中。但是,这不是非常可读的代码,而且我总是对将列索引提供给模型有点紧张。改用变量名可能更安全。

aa <- sapply(c("BMI","KOL"),function(x) as.formula(paste('Surv(BL_AGE,CVD_AGE,INCIDENT_CVD) ~', paste(c(x,colnames(s)[c(21,259,330,380)]), collapse='+'))))

【讨论】:

  • 是的,这正是我想做的!感谢您的理解和我将尝试消化的代码!但也许你知道上面显示的函数中x 的这个空间在哪里?谢谢!!!
  • Heroka,非常感谢!你拯救了我试图做的一周!你很酷! :) 我投票支持回复,但它不会出现,因为我是假人,无论如何谢谢你!
  • 不客气!我为自己的研究解决了非常相似的问题,这对我很有帮助,因此请了解您想要做什么。但我同意其他评论者的观点,即如果没有一些外部知识,您的问题不容易理解。
  • 是的,我知道,很抱歉,感谢您的帮助 :)
  • @AnnaGorald:SO 界面设计用于以复选标记和赞成票的形式具体表达批准。我怀疑 Herka 会像看到评论一样欣赏这两种肯定——“谢谢”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
相关资源
最近更新 更多