R:用lapply

时间:2019-04-07 00:17:08

标签: r lapply

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

问题:

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

数据:

  • perfs是一个包含3个元素的向量,每个元素都包含该图的主要数据。
  • 性能中的每一项对应于值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

2 个答案:

答案 0 :(得分:1)

要对每个绘图使用正确的标题,您需要一种将perfs元素与ks元素链接的方法,因此您只需为每个绘图选择一个。
一种执行此方法(也许是最简单的方法)的方法是使用for循环,而不是套用,然后在ks[i]的{​​{1}}参数中使用main。如果您更喜欢使用plot,那么我认为lapply应该可以正常工作(如下面的代码所示),前提是match的每个元素都不同。

要在每个图上使用一个perfs ,您需要在abline中调用的函数中包含abline部分,以便在每个图旁边运行该部分。

lapply

答案 1 :(得分:0)

我正在使用@hodgenovice表示的for循环

我使用索引ind访问k向量中ks的值。 这样,我可以为每个图形绘制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)
}