В ответ на этот вопрос я создал свой собственный пакет, в котором используется data.table
.
. Внутри пакета я использую data.table
для вычисления среднего значения на столбец в матрица в соответствии с другим столбцом.
Что-то в строках этого:
datam <- cbind(matrix(rexp(100), 10), IN=c(rep(1,2), rep(2,3), rep(3,2), rep(4,1), rep(5,2)))
dd <- data.table::data.table(datam)
result <- dd[, lapply(.SD, mean), by=IN]
Единственный способ заставить его работать - это включить data.table
в поле Depends:
моего DESCRIPTION
файл AND import(data.table)
в файле NAMESPACE
.
Теперь я хочу иметь возможность вызывать функцию из моего пакета, использующего data.table
, например:
mypackage::myfunction(...)
Тем не менее, я получаю следующую ошибку:
Ошибка в lapply (.SD, среднее): объект '.SD' не найден
Эта ошибка исчезнет только в том случае, если Я вызываю свою функцию после загрузки пакета с помощью library()
, например:
library(mypackage)
myfunction(...)
Поскольку мой пакет впоследствии будет вызываться из других пакетов, есть ли способ заставить его работать без использования library()
каждый раз, как я делаю для каждого другого пакета, из которого мне нужна функция? Спасибо
РЕДАКТИРОВАТЬ
Я только что сделал пакет MWE, который воспроизводит ошибку. Пожалуйста, загрузите с Google Drive ссылку ниже:
https://drive.google.com/open?id=1yHxmQeoIOx9VIuL4EBrFWlGDBstnKJQs
Я использовал пакет usethis
для его сборки, в файле usethis_myexample.R
.
Сам пакет называется myexample
и содержится в папке myexample-package
. Внутри вы можете увидеть, что файл DESCRIPTION
содержит data.table
в разделе Imports
, а файл NAMESPACE
содержит import(data.table)
.
В * есть только одна функция с именем aggregate_mean
Файл 1061 * внутри папки R.
Рядом с папкой myexample-package
есть папка tests
с тестовым файлом с именем mytest.R
для запуска функции aggregate_mean
, подобной этой:
mymat <- cbind(matrix(rexp(100), 10), IN=c(rep(1,2), rep(2,3), rep(3,2), rep(4,1), rep(5,2)))
mymat
mynewmat <- myexample::aggregate_mean(mymat, "IN")
mynewmat
Я всегда сталкиваюсь с ошибкой:
Ошибка в lapply (.SD, среднее): объект '.SD' не найден
Спасибо!