Пакет R Построить на Linux - особое внимание для data.table в DESCRIPTION и NAMESPACE - PullRequest
1 голос
/ 23 февраля 2020

Если я использую исходный код, то все работает, но когда я создаю пакет / функцию, это дает мне ошибку. Я что-то пропустил?

тестовый пакет

test <- function () {</p>

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)

}

создать пакет, используя R CMD build Linux

test 
   |__R
      |__test.r
   |__DESCRIPTION
   |__NAMESPACE

R CMD build test

R CMD INSTALL test_1.0.tar.gz

Содержимое ОПИСАНИЯ

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

использовать функцию в библиотеке R

("test")

test ()

Получите ошибку, как показано ниже

Ошибка в [.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)

1 Ответ

0 голосов
/ 23 февраля 2020

Спасибо @Dirk Eddelbuettel. Вы правы, и это сработало. Я обнаружил, что на StackOverflow был дан ответ, а также имеется хорошая документация.

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

Использование пакета data.table внутри моего собственного пакета

...