У кого-нибудь есть объяснение следующего поведения?
У меня есть файл .R для документации. Я хочу использовать внутренний объект для создания нового объекта (импортированного или экспортированного, это не имеет значения, оба приводят к одному и тому же сбою)
Для моего пакета testpak
я создал внутренний объект с
data_int <- data.frame(a = 1)
usethis::use_data(data_int, internal = TRUE, overwrite = TRUE)
Для сборки пакета я использую файл .R со следующим кодом:
Не работает
#' some_name
#' @description something
#' @return list for each test type
test <- testpak:::data_int
#> Error in get(name, envir = asNamespace(pkg), inherits = FALSE) : object 'data_int' not found
#> ERROR: lazy loading failed for package ‘testpak’
I вроде бы понять, что каким-то образом возникают проблемы с поиском объекта в еще не определенном пространстве имен.
Но теперь это забавно. Когда я получаю доступ к одному и тому же объекту внутри функции, сборка пакета работает .
#' some_name
#' @description something
#' @return list for each test type
test <- function() testpak:::data_int
#> no error
Еще один способ заставить сборку пакета работать - добавить usethis::use_data(...)
в код.
Достаточно забавно, но на самом деле не перезаписывает ранее записанный внутренний объект! (несмотря на использование overwrite = TRUE
)
#' some_name
#' @description something
#' @return list for each test type
data_int <- data.frame(a = 1)
usethis::use_data(data_int, internal = TRUE, overwrite = TRUE) # does not actually overwrite the previously written internal object
test <- testpak:::data_int
#> no error
sessionInfo()
#R version 3.6.3 (2020-02-29)
#Platform: x86_64-apple-darwin15.6.0 (64-bit)
#Running under: macOS Mojave 10.14.6
#roxygen2_7.1.0