R 已定义函数中缺少函数(x)

R 已定义函数中缺少函数(x),r,function,sapply,R,Function,Sapply,我在以下几点上理解了这一点 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='+')))) aa由于文本太多,因此将此作为答案而不是评论 如果我理解正确的话,那么您正在尝试迭代一系列变量,您希望(依次)将这些变量添加到生存模型中的一组自变量中。你给出的代

我在以下几点上理解了这一点

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='+'))))

aa由于文本太多,因此将此作为答案而不是评论

如果我理解正确的话,那么您正在尝试迭代一系列变量,您希望(依次)将这些变量添加到生存模型中的一组自变量中。你给出的代码中的问题是你没有给
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)})
库(生存)
数据(癌症)

myvars你能详细说明你想做什么吗?我会试试。。我试图将
Surv(BL\u AGE,CVD\u AGE,INCIDENT\u CVD)~SUKUP+HDL+SYSTM+PREVAL\u DIAB,data=c
应用于我的数据框的两列(
BMI和KOL
)。我希望
aa
能给我返回这样的信息
Surv(BL_年龄,CVD年龄,偶发性CVD)~BMI+SUKUP+HDL+SYSTM+PREVAL_DIAB,data=c
Surv(BL_年龄,CVD年龄,偶发性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
很难理解你的问题。是的,这正是我想做的!感谢您的理解和代码,我将尝试消化!但是您可能知道在上面显示的函数中,
x
的空间在哪里?非常感谢。赫罗卡,非常感谢你!你救了我的一周,我正想这么做!你很酷!:)我投了赞成票,但它不会出现,因为我是傻瓜,无论如何,谢谢!不客气!我已经为自己的研究解决了非常相似的问题,这对我很有帮助,所以我想知道你想做什么。但我同意其他评论者的观点,如果没有一些外部知识,你的问题不容易理解。是的,我知道,很抱歉,谢谢你的帮助:)@AnnaGorald:SO界面设计用于以复选标记和向上投票的形式表达具体的赞同。我想Heroka会像看到评论“谢谢”一样感谢这两种肯定。
models <- lapply(myvars, function(x){
  form <- as.formula(sprintf("Surv(time, status)~age+sex+%s",x))
  fit <- coxph(formula=form, data=cancer)
  return(fit)
})
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='+'))))