1

我想构建一个 rPOC 绘图对象,我可以将其传递给函数并稍后绘制。在下面的示例中(取自此处),我当然可以绘制我的 roc 曲线。但我想创建一个绘图对象(例如通过定义 g <- 然后用 plot(g) 绘制它)。似乎下面的 ciobj、ci 函数的图将添加到原始图,但我无法制作将这些层组装在一起的 OBJECT。我尝试了“添加”参数,并使用这些绘图函数的返回值创建新的绘图对象。

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"))
4

1 回答 1

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 的评估规则的耐心。

于 2015-07-20T19:27:08.003 回答