作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对coxph安全地使用purrr:::,以便捕获错误消息。我制作了一个安全的Coxph版本,如下所示
library(survival)
library(purrr)
coxph_safe <- safely(coxph)
test1 <- list(time=c(4,3,1,1,2,2,3),
status=c(1,1,1,0,1,1,0),
x=c(0,2,1,1,1,0,0),
sex=c(0,0,0,0,1,1,1))
# Without subset
coxph(Surv(time, status) ~ x, test1) # Works as expected
coxph_safe(Surv(time, status) ~ x, test1) # Works as expected
# With subset
coxph(Surv(time, status) ~ x, test1, subset = !sex) # Works as expected
coxph_safe(Surv(time, status) ~ x, test1, subset = !sex) # Error!
cox_1 <- coxph(Surv(time, status) ~ x, test1) # Works as expected
anova(cox_1) # Works as expected
cox_1s <- coxph_safe(Surv(time, status) ~ x, test1) # Works as expected
anova(cox_1s$result) # Error in is.data.frame(data) : ..2 used in an incorrect context, no ... to look in
cox_1$call # coxph(formula = Surv(time, status) ~ x, data = test1)
cox_1s$result$call # .f(formula = ..1, data = ..2)
cox_1s$result$call <- cox_1$call
anova(cox_1s$result) # Now works as expected
最佳答案
实际上,这与purrr::safely
无关。问题是函数嵌套。考虑:
f <- function(...) {coxph(...)}
f(Surv(time, status) ~ x, test1) # Works
f(Surv(time, status) ~ x, test1, subset=!sex) # Error
substitute()
inside nested functions有关。
coxph()
使用
substitute()
,并且
safely()
创建一个嵌套函数,导致我的链接中描述的场景。
coxph()
包装到可以正确处理非标准评估(NSE)的函数中:
coxph_nse <- function(...) {eval(rlang::expr(coxph( !!!rlang::enexprs(...) )))}
safely()
:
coxph_safe <- safely(coxph_nse)
coxph_safe(Surv(time, status) ~ x, test1) # works
cx1 <- coxph_safe(Surv(time, status) ~ x, test1, subset=!sex) # now also works!
anova(cx1$result) # works as well!
关于r - 如何安全地使用coxph和子集或权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57291701/
我是一名优秀的程序员,十分优秀!