Предположим, что пакет R ( myPackage ) импортирует пакет R RCircos через файл DESCRIPTION и файл NAMESPACE.
$ cat DESCRIPTION
Package: myPackage
Imports: RCircos (>= 1.2.0)
...
$ cat NAMESPACE
import(RCircos)
...
Одним из преимуществ RCircos является то, что он определяет пользовательскую среду (называемую RCircos.Env ) и считывает / записывает переменные в эту среду из различных его функций. Например, функция RCircos.Initialize.Plot.Parameters читает и записывает в эту среду.
...
RCircosEnvironment <- NULL;
RCircosEnvironment <- get("RCircos.Env", envir = globalenv());
RCircosEnvironment[["RCircos.PlotPar"]] <- plot.param;
(Это своеобразное поведение также распознавалось другими пакетами R; см., Например, строки 247-249 этого пакета).
К сожалению, кажется, что среда RCircos.Env не распознается "из коробки" в myPackage , когда я просто импортирую RCircos через файл DESCRIPTION и файл NAMESPACE.
Так что же можно сделать?
Кажется, есть два варианта сделать среду RCircos.Env доступной для таких функций, как RCircos.Initialize.Plot.Parameters
. Однако оба этих параметра заставляют проверку CRAN (R CMD check myPackage --as-cran
) выдавать ПРЕДУПРЕЖДЕНИЯ или ПРИМЕЧАНИЕ при обязательной оценке myPackage перед отправкой в CRAN, что препятствует ее принятию в CRAN.
Опция 1 : Я включаю следующую строку непосредственно перед функцией, требующей объекта:
# my code here #
assign("RCircos.Env", RCircos::RCircos.Env, .GlobalEnv)
RCircos.Set.Core.Components(...)
# my code here #
Тем не менее, проверка CRAN выделяет эту строку ПРИМЕЧАНИЕ, тем самым предотвращая принятие myPackage на CRAN.
* checking R code for possible problems ... NOTE
Found the following assignments to the global environment:
File ‘PACViR/R/visualizeWithRCircos.R’:
assign("RCircos.Env", RCircos::RCircos.Env, .GlobalEnv)
Опция 2 : Я загружаю всю библиотеку RCircos перед функцией, требующей объекта:
# my code here #
library(RCircos)
RCircos.Set.Core.Components(...)
# my code here #
Однако проверка CRAN выделяет эту опцию ПРЕДУПРЕЖДЕНИЕМ, снова предотвращая принятие myPackage на CRAN.
* checking dependencies in R code ... WARNING
'library' or 'require' call not declared from: ‘RCircos’
'library' or 'require' call to ‘RCircos’ in package code.
Please use :: or requireNamespace() instead.
See section 'Suggested packages' in the 'Writing R Extensions' manual.
Конечно, должен быть простой и CRAN-совместимый способ сделать среду RCircos.Env доступной для таких функций, как RCircos.Set.Core.Components
в myPackage ! Может кто-нибудь назвать и объяснить такой способ?