for
我正在尝试定义一个在 R 中返回图形对象的函数。我的想法是,然后我可以使用循环或函数多次使用不同的参数调用此函数lapply
,然后绘制grobs
in的列表gridExtra::grid.arrange
。但是,我还没有走到那一步。我无法将 r 识别为调用的一部分。我已经编写了一些代码来向您展示我的问题。我尝试引用和取消引用参数,unqoute()
在函数中使用(用户定义函数中的“找不到对象”错误,eval()函数?),使用eval(parse())
(R - 如何使用参数列表过滤数据以生成多个数据框架和图表),使用!!
等。但是,我似乎无法让它工作。有谁知道我应该如何处理这个?
library(survminer)
library(survival)
data_km <- data.frame(Duration1 = c(1,2,3,4,5,6,7,8,9,10),
Event1 = c(1,1,0,1,1,0,1,1,1,1),
Duration2 = c(1,1,2,2,3,3,4,4,5,5),
Event2 = c(1,0,1,0,1,1,1,0,1,1),
Duration3 = c(11,12,13,14,15,16,17,18,19,20),
Event3 = c(1,1,0,1,1,0,1,1,0,1),
Area = c(1,1,1,1,1,2,2,2,2,2))
# this is working perfectly
ggsurvplot(survfit(Surv(Duration1, Event1) ~ Area, data = data_km))
ggsurvplot(survfit(Surv(Duration2, Event2) ~ Area, data = data_km))
ggsurvplot(survfit(Surv(Duration3, Event3) ~ Area, data = data_km))
myfun <- function(TimeVar, EventVar){
ggsurvplot(survfit(Surv(eval(parse(text = TimeVar), eval(parse(text = EventVar)) ~ Area, data = data_km))
}
x <- myfun("Duration1", "Event1")
plot(x)