Предоставление данных и столбцов в отдельных аргументах

Я знаю, как рисовать кривые выживания (сделано survival пакет) autoplot от ggfortify, Здесь я использую ovarian фрейм данных, также из пакета выживания.

library(survival)
library(ggfortify)

autoplot(survfit(Surv(ovarian$futime, ovarian$fustat) ~ ovarian$resid.ds))

Можно предоставить функцию Survfit только с именами столбцов и отдельно указать фрейм данных:

autoplot(survfit(Surv(futime, fustat) ~ resid.ds, data = ovarian))

Это хорошо работает. То, что я хотел бы сделать, это обернуть это в мою собственную функцию с data вначале аргумент, чтобы я мог использовать каналы и предварительно отфильтровать мой информационный кадр, не создавая gazillions новых информационных фреймов.

Это функция:

 myfun <- function(data, time, event, group){
      autoplot(survfit(Surv(time, event) ~ group, data))
 }

Однако при его вызове возникает ошибка:

myfun(ovarian, futime, fustat, resid.ds)

Error in Surv(time, event) : object 'futime' not found 

Я что-то пропустил?

1 ответ

Решение

Я думаю, что у меня есть это. Использование индексов для адресации столбцов работает просто отлично.

myfun <- function(data, time, event, group){
  autoplot(survfit(Surv(data[,time], data[,event]) ~ data[,group]))
}


filter(ovarian, futime < 500) %>%
myfun("futime", "fustat", "resid.ds")

Если у вас есть более элегантное или "правильное" решение, я весь в ушах.:-)

Другие вопросы по тегам