我的生成目标的函数不仅依赖于data.frame,还依赖于其他参数.喜欢:

# _targets.R
library(targets)
mydat <- function() data.frame(time=1901:2020, val=letters[1:10])
myfun <- function(dat, from, to) subset(dat, time>from & time<to)
list(
    tar_target(dat, mydat()),
    tar_target(dat_of_interest, myfun(dat, from=2019, to=2020)
)

现在我想知道如何定义目标管道,使它知道参数的变化?是否有最佳做法?

推荐答案

targets也足够智能,可以判断全局变量的依赖关系,因此您只需编写:

library(targets)
mydat <- function() data.frame(time = 1901:2020, val = letters[1:10])
myfun <- function(dat, from, to) subset(dat, time >= from & time <= to)
from <- 2018
to <- 2020
list(
  tar_target(dat, mydat()),
  tar_target(dat_of_interest, myfun(dat, from = from, to = to))
)
tar_make()
# ▶ start target dat
# ● built target dat [0.02 seconds]
# ▶ start target dat_of_interest
# ● built target dat_of_interest [0 seconds]
# ▶ end pipeline [4.39 seconds]

tar_make()
# ✔ skip target dat
# ✔ skip target dat_of_interest
# ✔ skip pipeline [2.62 seconds]

from <- 2017
tar_make()
# ✔ skip target dat
# ▶ start target dat_of_interest
# ● built target dat_of_interest [0 seconds]
# ▶ end pipeline [3.5 seconds]

但是,您也可以更具体地将其作为自己的目标,通过在目标中硬编码常量,或者通过创建包装器函数:

tar_target(from, 2019)

## or

get_from <- function() {
  2019
}
tar_target(from, get_from())

在第一种情况下,要更改from,在后一种情况下更改tar_target中的值,更改函数的返回值.我会 Select 全局方法或包装器函数.

R相关问答推荐

基于两个现有列创建新列

仅在ggplot的每个方面绘制最丰富的物种

棒棒糖图表大小和线宽参数故障标签未出现

按条件计算观察次数

在ComplexHeatmap中,如何更改anno_barplot()标题的Angular ?

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

如何将移除事件分配给动态创建的按钮?

筛选出以特定顺序患病的个体

如何在所有绘图中保持条件值的 colored颜色 相同?

在R中使用Scale_y_Break后更改y轴标签

使用data.table::fcase()而不是dplyr::case_When()时保持值

如何读取CSV的特定列时,给定标题作为向量

在使用bslb和bootstrap5时,有没有办法更改特定dt行的 colored颜色 ?

仅 Select 超过9行的CSV文件

将Posict转换为数字时的负时间(以秒为单位)

在R中创建连续的期间

在另一个包中设置断点&S R函数

使用列中的值来调用函数调用中应使用的其他列

如何显示准确的p值而不是<;0.001*?

如何在GALT包的函数&geom_x样条线中调整线宽