Я пытаюсь определить функцию, которая возвращает графический объект в R. Идея состоит в том, что я могу затем вызвать эту функцию с разными аргументами несколько раз, используя функцию for
l oop или lapply
, затем построение списка grobs
в gridExtra::grid.arrange
. Однако я еще не дошел до этого. У меня проблемы с распознаванием аргументов как части вызова. Я сделал некоторый код, чтобы показать вам мою проблему. Я пытался заключать в кавычки и снимать кавычки аргументов, используя unqoute()
в функции ( Ошибка «Объект не найден» в определенной пользователем функции, функция eval ()? ), используя eval(parse())
( R - как отфильтровать данные со списком аргументов для получения нескольких фреймов данных и графиков ), используя !!
, et c. Тем не менее, я не могу заставить его работать. Кто-нибудь знает, как мне справиться с этим?
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)