r - 使用 lapply 将标签传递给 ggplot2
问题描述
我正在尝试使用 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])
}
} )
解决方案
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))
推荐阅读
- javascript - 是否可以使用渐变来绘制它?
- asp.net-mvc - 如何更改 IList 中的属性值
- linux - 从 Docker 运行 Spring Boot 应用程序不起作用
- image - 应用程序显示来自我自己以外的其他 URL 的 URL 图像
- amazon-web-services - AWS Cognito 防止创建重复的电话号码
- jsf - 使用 JSF 2.3 在 head 元素内的 CSS 文件之后放置外部 JavaScript
- angular - 角度分页在数据表中不起作用
- c++ - DLL 和 EXE 中具有相同名称和父级但实现不同的类中的问题
- spring - 带有弹簧的消息驱动 POJO。收不到消息
- json - 关于 API RESTful 请求的说明