简体   繁体   English

在 Linux 上构建的 R 包 - 对描述和命名空间中的 data.table 的特殊考虑

[英]R Package Build on Linux - special consideration for data.table in DESCRIPTION and NAMESPACE

If I use source code then everything is working but when I create package/function then it is giving me an error.如果我使用源代码,那么一切正常,但是当我创建包/函数时,它会给我一个错误。 Am I missing anything?我错过了什么吗?

test package测试包

test <- function() {测试 <- 函数(){

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)

} }

create a package using R CMD build on Linux在 Linux 上使用 R CMD build 创建一个包

test 
   |__R
      |__test.r
   |__DESCRIPTION
   |__NAMESPACE

R CMD build test R CMD 构建测试

R CMD INSTALL test_1.0.tar.gz R CMD INSTALL test_1.0.tar.gz

Content of DESCRIPTION说明内容

Package: test
Title: test
Version: 1.0
Authors@R: person("xyz", "xyz", email = "xyz@xyz.com",
                  role = c("aut", "cre"))
Description: test
Depends: R (>= 3.6.0)
License: test
Encoding: UTF-8
LazyData: true
Imports:
    data.table

use function in R在 R 中使用函数

library("test")图书馆(“测试”)

test()测试()

Get an error as below得到如下错误

Error in [.data.frame (x, i, j) : object 'cnt' not fo [.data.frame (x, i, j) 中的错误:对象 'cnt' not fo

R code without package and it is working没有包的 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)

Thanks @Dirk Eddelbuettel.谢谢@Dirk Eddelbuettel。 You are right and it worked.你是对的,它奏效了。 I found out that question have been answered on StackOverflow and also good documentation available.我发现这个问题已经在 StackOverflow 上得到了回答,并且还提供了很好的文档。

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

Using data.table package inside my own package 在我自己的包中使用 data.table 包

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM