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 全局方法或包装器函数.