使用lapply将标签传递给ggplot2

问题描述 投票:0回答:1

我试图使用lapply循环遍历包含绘图标签的向量列表。该列表包含向量。矢量的第一个元素是图标题,然后是x轴标签,然后是y轴标签。我想避免编写任何for循环。我无法弄清楚如何参考。下面的代码是我能想到的最接近的代码,但它只输出NULL 3次。

library(tidyverse)

plot.labels <- list(c("Title1","Xlab1","ylab1"),c("Title2","Xlab2","ylab1"),c("Title3","Xlab3","ylab1"))

plotter <- function(plotdata=d, xvar=cond,lab = NULL){
  ggplot(data = plotdata, aes( x = xvar , y = scale(vowmeanf0) ))+
    geom_point()+
    labs(title = lab[1],
         x = lab[2],
         y = lab[3])
}

lapply(plot.labels, function(x){
  for(df in 1:length(plot.labels)){
    plotter(x[df])
  }
} )
r ggplot2 functional-programming lapply sapply
1个回答
0
投票

lapply看起来应该更像这样。你永远不应该在lapply中循环,因为lapply本质上是for循环开头的包装器。 lapply(plot.labels,function(x)plotter(plotdata = d,xvar = cond,lab = x)) - Mako212

那很有效

library(tidyverse)

plot.labels <- list(c("Title1","Xlab1","Ylab1"),c("Title2","Xlab2","Ylab2"),c("Title3","Xlab3","Ylab3"))

plotter <- function(plotdata = NULL, xvar = NULL ,lab = NULL){
  ggplot(data = plotdata, aes( x = xvar , y = scale(vowmeanf0) ))+
    geom_point()+
    labs(title = lab[1],
         x = lab[2],
         y = lab[3])
}

lapply(plot.labels, function(x) plotter(plotdata = d, xvar = "cond", lab = x))
© www.soinside.com 2019 - 2024. All rights reserved.