【发布时间】:2021-11-10 14:46:58
【问题描述】:
经过一番挖掘(1、2、3),如果我正确理解它们,似乎有一些关于在函数中使用公式会导致范围问题的帖子。有些人建议使用环境、分配或<<- 来解决这个问题,但我一直被如何使用它们所困扰(并且首先困惑为什么会出现问题)。
让我们试试这个玩具代码:
library(survival)
library(survminer)
set.seed(1)
give_p_val <- function() {
df <- data.frame('OS' = ovarian[, 'futime'], 'Survival_event' = ovarian[, 'fustat'])
subgroup <- sample(nrow(df), nrow(df)/2)
df$Class <- 'A'
df$Class[subgroup] <- 'B'
fit2 <- survfit(Surv(OS, Survival_event) ~ Class, data=df)
return(surv_pvalue(fit2))
}
give_p_val( )
它不起作用,除非您直接运行它,这暗示了范围界定问题。
此代码将返回一个合适的对象:
survfit(Surv(futime, fustat) ~ rx, data=ovarian)
那么,如果我们在作用域内复制数据框,为什么函数会中断呢?
testit<-function(){
ovarian2 <- ovarian
fit2 <- survfit(Surv(futime, fustat) ~ rx, data=ovarian2)
return(surv_pvalue(fit2))
}
testit()
最终,我如何在函数中生成数据框,以便由正在使用的公式正确处理? 谢谢!
【问题讨论】:
标签: r function survival-analysis scoping