我想构建一个rPOC绘图OBJECT,我可以将其传递给函数并稍后绘图。在下面的例子中(取自here),我当然可以绘制我的roc曲线。但我想创建一个情节OBJECT(比如通过定义g< - 然后用图(g)绘制它)。似乎下面的ciobj,ci函数的图将添加到原始图中,但我无法将这些图层组合在一起。我尝试了'add'参数,并使用这些绘图函数的返回值创建新的绘图对象。
library(pROC)
data(aSAH)
rocobj <- plot.roc(aSAH$outcome, aSAH$s100b, main="Confidence intervals", percent=TRUE, ci=TRUE, print.auc=TRUE)
ciobj <- ci.se(rocobj, specificities=seq(0, 100, 5))
plot(ciobj, type="shape", col="#1c61b6AA")
plot(ci(rocobj, of="thresholds", thresholds="best"))
答案 0 :(得分:2)
正如MrFlick所提到的,你可以传递函数而不是对象。或者,您可以传递未评估的函数调用,并在函数中对它们进行评估。例如:
library(pROC)
data(aSAH)
plot1 <- quote(plot(rocobj, main="Confidence intervals", print.auc=TRUE))
plot2 <- quote(plot(ci.se(rocobj, specificities=seq(0, 100, 5)), type="shape", col="#1c61b6AA"))
plot3 <- quote(plot(ci(rocobj, of="thresholds", thresholds="best")))
doplots <- function(rocobj, calls) {
for (call in calls) {
eval(call)
}
invisible(rocobj)
}
roc1 <- roc(aSAH$outcome, aSAH$s100b, percent = TRUE)
doplots(roc1, list(plot1, plot2, plot3))
roc2 <- roc(aSAH$outcome, aSAH$wfns, percent = TRUE)
doplots(roc2, list(plot1, plot3))
除了您对R评估规则的耐心外,您可以做的事情没有限制。