使用for循环绘制多个ROC曲线

时间:2019-04-27 13:38:15

标签: r ggplot2

我需要在一个图上绘制许多不同的ROC曲线。为了避免手动创建每个ROC曲线,我创建了一个for循环来自动执行此过程。但是,由于某种原因,对于名称列表中的最后一个模型,代码仅输出一条曲线。谁能帮我弄清楚为什么它不起作用?请参见下面的可复制示例:

library(pROC)
library(tidyverse)

dat_tst_2 <- data.frame(result = sample(letters[1:2], 100, replace = T))

preds_1 <- data.frame(x = runif(100),
                      y = runif(100))
preds_2 <- data.frame(x = runif(100),
                      y = runif(100))

names_preds <- c("preds_1", "preds_2")

output <- list()

for (j in 1:length(names_preds)) {
     for (i in names_preds) {
          roc_model <- roc(response = dat_tst_2$result, 
                           predictor = eval(as.name(i))[,2],
                           levels = c("a", "b"),
                           plot = F) 
          output[[j]] <- roc_model
     }   
}

ggroc(output)

1 个答案:

答案 0 :(得分:1)

首先请确保输出在str(output)中包含多个项目。然后尝试将输出中的每个项目传递给ggroc:

 lappy( output, function (out) { png()
                  print (ggroc(out))
                   dev.off()               }