SuperAPI AI 工具集

targets-pipelines

数据与分析

查看项目

更新于 10-16 09:13

技能介绍

用途

targets-pipelines 是一份面向 targets R 包使用者的技能文档,用于指导编写复杂的 targets 流水线,尤其是涉及分支(branching)、批处理(batching)和自定义目标工厂(target factories)的场景。当用户需要从单个定义生成多个相似目标、进行参数扫描、方法比较或批量模拟时,该文档提供决策依据和代码模式。

主要能力

文档围绕四种核心模式展开:

  1. 静态分支(Static Branching):在 tar_make() 运行前已知迭代次数时使用,通过 tarchetypes::tar_map() 生成具有友好名称的目标(如 result_bayesian、result_freq)。可用 tarchetypes::tar_combine() 聚合结果,需配合 unlist = FALSE 使用。函数名必须用 rlang::syms() 转为符号,不能使用字符串。

  2. 动态分支(Dynamic Branching):当分支数量取决于数据或需要大规模扩展时使用,通过 pattern 参数实现。支持 map(x, y) 并行迭代、cross(x, y) 笛卡尔积、slice()、head()、tail()、sample() 等子集操作。关键限制是 pattern 只能引用上游目标名称,不能引用外部 R 对象或表达式。

  3. 混合模式(Hybrid):结合静态分支(方法/变体)与动态分支(重复实验),使用 tarchetypes::tar_map_rep(),可指定 batches 和 reps 参数。

  4. 目标工厂(Target Factories):返回预配置目标对象的函数,使用 targets::tar_target_raw() 和元编程技术封装可复用的多目标模式。

文档还包含决策树,帮助用户根据迭代是否已知、是否需要友好命名等条件选择合适方案。

使用方式

文档提供验证与调试命令:

  • targets::tar_manifest() 在运行前检查目标定义,可指定 fields 参数。
  • targets::tar_visnetwork(targets_only = TRUE) 可视化 DAG。
  • targets::tar_pattern() 在不运行流水线的情况下测试 pattern 逻辑。
  • targets::tar_meta() 配合 dplyr::filter(error != "") 识别失败分支。
  • targets::tar_read(target_name, branches = 1) 按索引读取特定分支。
  • targets::tar_branches(target_name) 检查所有分支元数据。

调试策略包括:先用 tar_manifest() 验证目标数量和命令;用 pattern = head(x, n = 3) 进行子集测试;在分支输出中加入参数值以便追溯;先检查上游依赖。

适用场景

  • 方法比较(如贝叶斯与频率学派方法对比)
  • 参数扫描与模拟实验
  • 大规模文件处理(动态分支可支持 10 万以上目标)
  • 方法 × 重复实验的组合场景
  • 需要封装可复用多目标模式的包开发

限制

  • 静态分支适合少于 1000 个目标,动态分支适合 10 万以上目标。
  • 动态分支的目标名称是哈希值(如 analysis_3a7f2b),可读性差。
  • 动态分支必须运行后才能看到分支,tar_manifest() 只能提供部分验证。
  • pattern 不能引用外部对象,必须创建上游目标。
  • 函数名必须使用 rlang::syms(),字符串不可调用。
  • 使用 tar_combine() 时 tar_map() 必须设置 unlist = FALSE。
  • 在 expand_grid() 内使用 syms() 不会展开,需在网格创建后再应用 syms()。

参考文件

文档引用多个主题文件:topic-static-branching.md、topic-dynamic-branching.md、topic-hybrid-branching.md、topic-target-factories.md,以及 references/tarchetypes-functions.md、references/pattern-composition.md、references/targets-utilities.md 和模板文件 templates/static-branching.R、templates/target-factory.R。外部资源包括 targets 文档、tarchetypes 包及 targets 手册中关于动态和静态分支的章节。