【问题标题】:R Package Build on Linux - special consideration for data.table in DESCRIPTION and NAMESPACE在 Linux 上构建 R 包 - 对DESCRIPTION 和 NAMESPACE 中的 data.table 的特殊考虑
【发布时间】:2020-06-07 10:33:35
【问题描述】:

如果我使用源代码,那么一切正常,但是当我创建包/函数时,它会给我一个错误。我错过了什么吗?

测试包

测试

library("data.table")
dd <- mtcars
setDT(dd)
dd$cnt <- 1
eval(parse(text=paste0("dd <- unique(dd[,list(cnt, mpg, cyl)])")))
eval(parse(text=paste0("dd1 <- dd[order(mpg, cyl)]")))
print(dd1)

}

在 Linux 上使用 R CMD build 创建包

测试 |__R |__test.r |__描述 |__命名空间

R CMD 构建测试

R CMD INSTALL test_1.0.tar.gz

描述内容

包装:测试 标题:测试 版本:1.0 作者@R:人(“xyz”,“xyz”,电子邮件=“xyz@xyz.com”, 角色 = c("aut", "cre")) 说明:测试 取决于:R (>= 3.6.0) 许可证:测试 编码:UTF-8 懒惰数据:真 进口: 数据表

在 R 中使用函数

库(“测试”)

测试()

得到如下错误

[.data.frame(x, i, j) 中的错误:对象 'cnt' 不是 fo

没有包的 R 代码,它正在工作

library("data.table")
dd <- mtcars
setDT(dd)
dd$cnt <- 1
eval(parse(text=paste0("dd <- unique(dd[,list(cnt, mpg, cyl)])")))
eval(parse(text=paste0("dd1 <- dd[order(mpg, cyl)]")))
print(dd1)

【问题讨论】:

  • 查看package.skeleton() 函数,看看它创建了什么——拥有一个包需要更多的时间。完整的详细信息在 Writing R Extensions 手册中。 (我的pkgKitten 包有助于对package.skeleton() 进行一些后处理,这会留下一些你必须编辑的东西,当你开始时会感到困惑。RStudio 也有一个包生成器助手,其他包也是如此。)
  • 谢谢,我在包的目录结构中添加了更多细节。我将研究 package.skeleton()。只是想看看在不使用许多其他依赖包等的情况下创建测试包的最简单方法是什么。
  • 好方法!在这种情况下,base R 及其package.skeleton() 函数应该是你最好的新朋友。我只是觉得它在创建后永远不会通过R CMD check --as-cran,因此有点令人反感,因此pkgKitten。但我使用与您相同的方法:首先尝试使用最少数量的帮助器,以真正了解最小结构。
  • 实际上,几年前我举办了一个研讨会,在那里我们手动创建了每个文件,您可以查看幻灯片/检查它是否仍然存在:dirk.eddelbuettel.com/papers/r_package_development_nov2014.pdf
  • 没有二进制编译,但我也发现data.table有时需要格外小心。你在NAMESPACE 中有import() 吗? (当然,你不应该在包中的 R 代码中调用 library()。看看还有什么 R CMD check 和/或 RStudio 中的 check 按钮)。

标签: r data.table r-package


【解决方案1】:

感谢@Dirk Eddelbuettel。你是对的,它奏效了。我发现这个问题已经在 StackOverflow 上得到了解答,并且还提供了很好的文档。

https://cran.r-project.org/web/packages/data.table/vignettes/datatable-importing.html

Using data.table package inside my own package

【讨论】:

    猜你喜欢
    • 2017-09-04
    • 2011-04-15
    • 2019-04-03
    • 1970-01-01
    • 2013-06-07
    • 2015-08-22
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多