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

如何在R包中导入GitHub上的data.table开发版并解决env参数报错

问题:R包中无法导入data.table开发版v1.14.9以使用env参数

背景

data.table开发版v1.14.9新增了env参数,这是用于data.table语言编程的新接口,特别适合在函数中使用data.table。我开发自身R包时想要使用该接口,但无法将data.table开发版导入包中。

已尝试的操作

  • 使用data.table::update_dev_pkg()更新data.table,交互式测试带env参数的函数一切正常;
  • 在包内通过load_all()使用同一函数时出现报错;
  • 在DESCRIPTION文件中添加Remotes: github::Rdatatable/data.table;
  • 在DESCRIPTION文件中加入Additional_repositories: https://Rdatatable.gitlab.io/data.table;
  • 将其改为additional_repositories: https://github.com/Rdatatable/data.table.git;
  • 查阅Wickham《R-packages》中关于导入非标准依赖的内容。

以上方法均无效,我不确定这些字段中应填写什么内容才能将最新的data.table开发版导入我的包中。

最小示例

该函数根据定义文件(.lbl)将数据文件(.dtt)中的数字代码替换为字符值。

# 仅交互式使用,不要在包内加载
data.table::update_dev_pkg()
library(purrr)
library(data.table)

# 包内使用的函数
make_labels <-
    function(.dtt,.lbl){
        f <- 
            function(.dtt,clm,val,lbl){
                .dtt[
                    , clm := as.character(clm)
                    , env = list(clm=clm)
                ][
                     clm == val
                    , clm := lbl
                    , env = list(clm=clm,val=val,lbl=I(lbl))
                ]
            }
        purrr::pwalk(.lbl,f,.dtt)
    }

# 示例数据
dtt <-
    data.table::data.table(
         v1 = rep(1:2,5)
        ,v2 = rep(1:5,2)
    )        
lbl <-
    data.table::data.table(
         clm = c(rep("v1",2),rep("v2",5))
        ,val = c(1:2,1:5)
        ,lbl = letters[1:7]
    )

# 运行函数
make_labels(dtt,lbl)

报错信息

交互式加载该函数时运行正常,但通过NAMESPACE导入机制(在DESCRIPTION中添加上述Remotes字段)并使用devtools::load_all()加载包内函数时,R抛出如下错误:

> make_labels(dtt,lbl)Error in `pmap()`:
ℹ In index: 1.
Caused by error:
! Check that is.data.table(DT) == TRUE. Otherwise, :=, `:=`(...)
and let(...) are defined for use in j, once only and in particular
ways. See help(":=").
Run `rlang::last_trace()` to see where the error occurred.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:29:58