R 使用变量名作为Lappy的绘图标题
我需要显示1-3个图表,我希望图表的标题基于使用的变量名 我可以在下面按照我的意愿来实现这一点:R 使用变量名作为Lappy的绘图标题,r,lapply,R,Lapply,我需要显示1-3个图表,我希望图表的标题基于使用的变量名 我可以在下面按照我的意愿来实现这一点: library(grid) library(ggplot2) library(gridExtra) a1 <- sample(1:100) a2 <- sample(1:100) a3 <- sample(1:100) make_graph <- function(x, y=deparse(substitute(x))){ time <- 1:100
library(grid)
library(ggplot2)
library(gridExtra)
a1 <- sample(1:100)
a2 <- sample(1:100)
a3 <- sample(1:100)
make_graph <- function(x, y=deparse(substitute(x))){
time <- 1:100
dfp <- data.frame(time, x)
ggplot(dfp, aes(x=time, y=x)) + geom_point() +
ggtitle(y)
}
g1 <- make_graph(a1)
g2 <- make_graph(a2)
g3 <- make_graph(a3)
grid.arrange(g1,g2,g3)
库(网格)
图书馆(GG2)
图书馆(gridExtra)
a1关于来自lappy
的变量名,您是对的。因此,在这种情况下,deparse
策略不是一个好策略。但是,由于您使传递标题变得非常容易,因此您可以使用Map
而不是lappy
graphs_list <- Map(make_graph, mget(sample_list), sample_list)
do.call("grid.arrange", graphs_list)
graphs\u列表精彩绝伦!我发誓我每天都学习一个新函数,我简直不敢相信它会那么容易:)@user3564760和Map
基本上是mapply
,默认情况下不会简化结果。因此它与lappy密切相关,它只允许您迭代多个参数以传递给函数
sample_list <- paste0("a", seq_len(3))
make_graph <- function(x, y){
time <- 1:100
dfp <- data.frame(time, x)
ggplot(dfp, aes(x=time, y=x)) + geom_point() +
ggtitle(y)
}
graphs_list <- lapply(mget(sample_list), make_graph, y=sample_list)
do.call("grid.arrange", graphs_list)
graphs_list <- Map(make_graph, mget(sample_list), sample_list)
do.call("grid.arrange", graphs_list)