r - 将环境中的所有 ggplot2 图存储在列表中
问题描述
我需要从一个创建近 10000 个情节的脚本中更改所有标签(标题/字幕)——所有这些都不同。我不想更改脚本代码,而是想遍历所有图并添加一个新labs
函数。这样一来,原作没有任何改变。为此,我需要将所有 ggplot2 对象放入列表中。
我的问题是:如何ggplot2
将环境中的所有对象存储到一个列表中?
下面的代码应该创建 11 个ggplot2
图并将它们存储在环境中(想要做相反的事情 .. 将它们从环境中放入一个列表中)。
library(tidyverse)
# Make a lot of ggplots using mtcars
all_plots <- list()
all_plots <- map(names(mtcars),
possibly(function(x){
mtcars %>%
ggplot(aes(mpg, x))+
geom_point()
}, NULL)) %>%
set_names(names(mtcars))
# function to add all ggplots to the environemnt
list_environment <- function(x) {
if(is.list(x)) {
list2env(x, envir = .GlobalEnv)
lapply(x, test)
}
}
list_environment(all_plots)
ls()
解决方案
首先收集ggplot
环境中所有对象的名称。您可以遍历ls()
并检查每个对象是否在其类中具有“ggplot”(这适用于您的示例):
my_ggplot_names=ls()[which(sapply(ls(),function(x) class(get(x))[2]=="ggplot"))]
然后很容易使用mget
将具有这些名称的所有对象收集到一个列表中:
my_listed_ggplots=mget(my_ggplot_names)
推荐阅读
- swift - dyld:未加载库:在实际 iPhone 上安装时
- c++ - 使用具有自动范围和结构化绑定的 C++ 迭代向量矩阵?
- javascript - 我试图访问 DOM 中无线电输入的名称属性,但显然所有名称字段的值都为 false?
- regex - NiFi - 使用先前属性 + 硬编码文本创建新属性的新属性
- c++ - std 线程构造函数是否采用可变线程函数?
- java - FAB on click 根据当前显示的片段开始新活动
- c++ - MSVC 编译器尝试调用已删除的复制构造函数,而不是移动地图元素
- django - 正确的日志配置以禁用 django 错误电子邮件
- c++ - 滥用指针会产生分段错误。我仍然不确定如何纠正它
- mysql - Node.js 自动迁移