在单独的参数中提供数据框和列
Providing dataframe and columns in separate arguments
我知道如何通过 ggfortify
的 autoplot
绘制生存曲线(由 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" 的解决方案,我会洗耳恭听。 :-)
我知道如何通过 ggfortify
的 autoplot
绘制生存曲线(由 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" 的解决方案,我会洗耳恭听。 :-)