Предоставление данных и столбцов в отдельных аргументах
Я знаю, как рисовать кривые выживания (сделано 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")
Если у вас есть более элегантное или "правильное" решение, я весь в ушах.:-)