R 德雷克-在ggplot上映射目标以输出它们

R 德雷克-在ggplot上映射目标以输出它们,r,ggplot2,ropensci,drake-r-package,R,Ggplot2,Ropensci,Drake R Package,首先,drake很神奇。我喜欢设计依赖关系图,然后一次性执行的工作流程 然而,我遇到了路障 我的工作流程是在大参数网格上进行模拟,然后总结所述网格的不同部分。我想为每个这样的片段创建一个绘图。如果我理解正确,我应该使用某种形式的cross->combine->map来实现这一点 以下是我所拥有的: sim_data <- function(mean, sd) { tibble(r = rnorm(1000, mean, sd)) } plot_dis <- function(l

首先,
drake
很神奇。我喜欢设计依赖关系图,然后一次性执行的工作流程

然而,我遇到了路障

我的工作流程是在大参数网格上进行模拟,然后总结所述网格的不同部分。我想为每个这样的片段创建一个绘图。如果我理解正确,我应该使用某种形式的
cross->combine->map
来实现这一点

以下是我所拥有的:

sim_data <- function(mean, sd) {
  tibble(r = rnorm(1000, mean, sd))
}

plot_dis <- function(lg, title) {
  ggplot(lg) + 
    geom_histogram(aes(x=r, fill=sd), binwidth = 0.25) + 
    labs(title = str_glue("x = {title}")) +
    ggsave(str_glue("{title}.pdf")) # side-effect
}

plan <- drake_plan(
  data = target(
    sim_data(mean = x, sd = sd),
    transform = cross(x = c(10, 20, 30), sd = c(1, 2))
  ), # awesome
  s_x = target(
    bind_rows(data, .id = "sd"),
    transform = combine(data, .by=x)
  ), # great
  plot = target(
    plot_dis(s_x, x),
    transform = map(s_x)
  ) # how to add a `file_out` to this target?
)

sim_data好问题。思考这一点实际上可以帮助我解决与
drake
+
keras
有关的一些问题

如何添加
file\u out()
s 就快到了,您只需要进行一些整洁的评估(
!!
),以确保每个文件名都是计划中的文本字符串

库(德雷克)
德雷克图(
数据=目标(
sim_数据(平均值=x,标准差=sd),
变换=交叉(x=c(10,20,30),sd=c(1,2))
),
s_x=目标(
绑定行(数据,.id=“sd”),
转换=组合(数据,.by=x)
),
绘图=目标(
绘图显示(s\U x,文件输出(!!sprintf(“%s.pdf”,x)),
变换=映射(s_x)
)
)
#>#tibble:12 x 2
#>目标命令
#>                                                
#>1个数据\u 10 \u 1个模拟数据(平均值=10,标准差=1)
#>2个数据单元20个模拟数据单元1个模拟数据单元(平均值=20,标准差=1)
#>3个数据单元30个模拟数据单元1个模拟数据单元(平均值=30,标准差=1)
#>4数据10模拟2模拟数据(平均值=10,标准差=2)
#>5个数据单元20个模拟数据单元2个模拟数据单元(平均值=20,标准差=2)
#>6个数据单元30个模拟数据单元2个模拟数据单元(平均值=30,标准差=2)
#>7个s_x_10绑定_行(数据_10_1,数据_10_2,.id=“sd”)
#>8个s_x_20绑定_行(数据_20_1,数据_20_2,.id=“sd”)
#>9 s_x_30绑定_行(数据_30_1,数据_30_2,.id=“sd”)
#>10 plot_s_x_10 plot_dis(s_x_10,文件输出(“10.pdf”))
#>11 plot_s_x_20 plot_dis(s_x_20,文件输出(“20.pdf”))
#>12 plot_s_x_30 plot_dis(s_x_30,文件输出(“30.pdf”))
由(v0.2.1)于2019-03-26创建

通过更多的元编程,您可以使用整个目标名称

库(德雷克)
德雷克图(
数据=目标(
sim_数据(平均值=x,标准差=sd),
变换=交叉(x=c(10,20,30),sd=c(1,2))
),
s_x=目标(
绑定行(数据,.id=“sd”),
转换=组合(数据,.by=x)
),
绘图=目标(
绘图显示(s_x,文件输出(!!sprintf(“%s.pdf”),deparse(替换(s_x∗∗∗)),
变换=映射(s_x)
)
)
#>#tibble:12 x 2
#>目标命令
#>                                                
#>1个数据\u 10 \u 1个模拟数据(平均值=10,标准差=1)
#>2个数据单元20个模拟数据单元1个模拟数据单元(平均值=20,标准差=1)
#>3个数据单元30个模拟数据单元1个模拟数据单元(平均值=30,标准差=1)
#>4数据10模拟2模拟数据(平均值=10,标准差=2)
#>5个数据单元20个模拟数据单元2个模拟数据单元(平均值=20,标准差=2)
#>6个数据单元30个模拟数据单元2个模拟数据单元(平均值=30,标准差=2)
#>7个s_x_10绑定_行(数据_10_1,数据_10_2,.id=“sd”)
#>8个s_x_20绑定_行(数据_20_1,数据_20_2,.id=“sd”)
#>9 s_x_30绑定_行(数据_30_1,数据_30_2,.id=“sd”)
#>10 plot_s_x_10 plot_dis(s_x_10,文件输出(“s_x_10.pdf”))
#>11 plot_s_x_20 plot_dis(s_x_20,文件输出(“s_x_20.pdf”))
#>12 plot_s_x_30 plot_dis(s_x_30,文件输出(“s_x_30.pdf”))
由(v0.2.1)于2019-03-26创建

但是你真的需要文件吗?
ggplot2
对象与
drake
的缓存配合得很好

库(德雷克)
图书馆(tidyverse)
sim卡数据目标数据\u 20\u 1
#>目标数据\u 20\u 2
#>目标数据\u 30\u 2
#>目标数据\u 30\u 1
#>目标s_x_10
#>目标s_x_20
#>目标s_x_30
#>目标图_s_x_10
#>目标图_s_x_20
#>目标图_s_x_30
readd(plot_s_x_10)#另见loadd()


由(v0.2.1)于2019年3月26日创建!