繁体   English   中英

R:为使用 lapply 生成的多个图绘制标题和 abline

[英]R: plotting title and abline for multiple plots generated with lapply

我正在使用lapply生成多个图以从每个图的向量中检索数据。

问题:

  • 我需要为每个图形绘制abline ,但它只在最后一个绘制。
  • 理想情况下,我还会为每个图表绘制不同的标题。

数据:

  • perfs是一个包含 3 个元素的向量,它的每个元素都包含绘图的主要数据。
  • perfs 中的每个项目对应于k的值,该值之前已在向量ks = c(5,7,11)

我曾尝试向 lapply 添加参数。

   lapply(perfs, function(perf) {plot(perf, main = paste0("Curva ROC", ks), col = "#42f4bf", lwd = 4)})
   abline(a = 0, b = 1, lwd = 2, lty = 2)

实际的:

  • abline仅在最后一个图中。
  • 标题为每个图中的每个k重复: ROC Curve5 ROC Curve7...
  • 这是最后一个情节: roc_curve_wrong

预期的:

  • 标题:ROC 曲线 5; ROC 曲线 7...
  • 每个图中的abline

要为每个图获得正确的标题,您需要有一种方法将 perfs 的元素链接到 ks 的元素,这样您就可以为每个图选择所需的一个。
一种方法(也许是最简单的)是使用for循环,而不是 lapply,并在plotmain参数中使用ks[i] 如果您更喜欢使用lapply ,那么我认为match应该可以正常工作(如下面的代码所示),前提是perfs每个元素都不同。

有一个abline每个情节,你需要包括abline你在调用函数中的一部分lapply ,让您运行部分并排情节。

lapply(perfs, function(perf) {
  k <- ks[match(list(perf), perfs)]     # Only need list() is perfs is a list
  plot(perf, main = paste0("Curve ROC", k), col = "#42f4bf", lwd = 4)
  abline(a = 0, b = 1, lwd = 2, lty = 2)
})

我正在使用 @hodgenovice 建议的 for 循环

我使用索引ind来访问ks向量中k的值。 通过这种方式,我可以为每个图形绘制abline并根据k的值命名它们。

ks <-c(5, 7, 11) # the previously defined values of k

ind <- 1 # index used for accessing ks
for (perf in perfs){  # each perf in perfs contains data used in the plot
     k <- ks[ind]
     ind <- ind + 1
     plot(perf, main = paste0("ROC Curve k = ", k), col = "#42f4bf", lwd = 4) 
     abline(a = 0, b = 1, lwd = 2, lty = 2)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM