You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级targets至1.11.3后tar_make()重复执行报错而非跳过流水线

问题:targets包二次执行tar_make报错:Item 7 of list input is not an atomic vector

脚本代码

library(targets)
list(
  tar_target(states0_1, c("U")),
  tar_target(res1_1, identity(states0_1))
)

首次执行情况

首次执行tar_make(res1_1)运行正常,输出如下:

> tar_make(res1_1)
+ states0_1 dispatched                       
✔ states0_1 completed [0ms, 53 B]
+ res1_1 dispatched
✔ res1_1 completed [0ms, 53 B]
✔ ended pipeline [258ms, 2 completed, 0 skipped]
Warning message:
package ‘targets’ was built under R version 4.3.3 

二次执行错误

再次执行tar_make(res1_1)时,并未跳过已构建的流水线,反而抛出错误:

> tar_make(res1_1)
Warning message:                    
package ‘targets’ was built under R version 4.3.3 
Error:
! Error in tar_make():
  Item 7 of list input is not an atomic vector
  See https://books.ropensci.org/targets/debugging.html

已尝试操作

  • 卸载并重装targets包
  • 执行tar_destroy()后可重新运行流水线,但再次执行仍会出现相同错误

解决方案

这个问题核心是targets的元数据缓存出现异常,结合你看到的R版本与包编译版本不匹配的警告,可按以下步骤解决:

  • 彻底清理缓存:除了tar_destroy(),手动删除项目根目录下的.targets文件夹,完全清空旧的元数据和缓存文件,再重新运行流水线。
  • 匹配R与包版本:如果你的R版本不是4.3.3,用install.packages("targets", type = "binary")安装适配当前R版本的预编译包,避免版本不兼容导致的元数据解析问题。
  • 避免指定单个target执行:直接运行tar_make()让targets自动判断依赖状态,而非指定单个target,可规避元数据读取的异常。
  • 更新到最新版targets:旧版本可能存在元数据处理的bug,执行install.packages("targets")更新到最新稳定版,通常能解决这类缓存相关问题。

内容的提问来源于stack exchange,提问作者Sumali Bajaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 10:42:39