在单独的参数中提供数据框和列

Providing dataframe and columns in separate arguments

我知道如何通过 ggfortifyautoplot 绘制生存曲线(由 survival 包制作)。这里我使用 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 参数将它包装到我自己的函数中,这样我就可以使用管道并预先过滤我的数据帧,而不必创建大量新数据帧。

这是函数:

 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 

我是不是漏掉了什么?

我想我有。使用下标对列进行寻址工作得很好。

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


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

如果您有更优雅或 "right" 的解决方案,我会洗耳恭听。 :-)