1

関数に渡して後でプロットできる rPOC プロット OBJECT を作成したいと思います。以下の例 (ここから取得) では、確かに ROC 曲線をプロットできます。しかし、プロット OBJECT を作成したいと思います (たとえば、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 に答える