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

在tidytable的pmap_dfr中使用data.table shift函数异常的问题

问题解决:tidytable pmap_dfr中data.table移位操作失效

问题根源

在tidytable::pmap_dfr的执行环境中,shift()函数会优先调用tidytable包的同名实现,而非data.table版本。tidytable的shift()在处理单个向量输入时,行为与data.table的shift()存在差异,导致移位结果不符合预期。

修复方案

在函数内明确指定调用data.table::shift(),消除命名冲突:

library(data.table)
library(tidytable)

minimal_fixed_function <- function(A){
  DT <- data.table(A) 
  DT[ , A:= data.table::shift(A, fill = NA, type = "lag", n = 1)]
  return(DT)
}

# 单向量测试正常
minimal_fixed_function(c(1,2))

# pmap_dfr执行符合预期
tidytable::pmap_dfr(.l = list(c(1,2)), 
                    .f = minimal_fixed_function)

预期输出

执行上述代码后,pmap_dfr会返回正确结果:

# A tidytable: 2 × 1
      A
  <dbl>
1    NA
2     1

额外建议

如果日常工作中同时使用data.table和tidytable,建议对所有同名函数(如shift、between等)都明确指定包命名空间,避免因环境作用域导致的函数调用混淆。

内容的提问来源于stack exchange,提问作者Michael Lachanski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:45:24