Я часто использую функции типа утилиты из других не экспортируемых пакетов:
pkg:::fun()
. Мне интересно, могу ли я использовать такую функцию в новой функциональности/области в своем собственном R-пакете. Каков правильный подход? Включает ли пакет в свой файл описания достаточно?
Использование неэкспортируемой функции из другого пакета R?
Ответ 1
-
Подводя комментарии к @baptise и т.д.:
-
:::
не разрешено в CRAN, поэтому параметры:- попросите автора экспортировать его, чтобы вы могли использовать его в своем пакете через стандартный импорт или предлагать.
- скопируйте/поднимите версию и четко укажите в своем пакете.
Ответ 2
Другой трюк использует getFromNamespace
fun = getFromNamespace("fun", "pkg")
Единственное преимущество перед :::
заключается в том, что вы не получаете никаких ПРИМЕЧАНИЕ, и это разрешено для CRAN. Конечно, это не очень хорошая практика, так как скрытое изменение в pkg
может разорвать ваш пакет.
Примечание: с помощью roxygen вы также должны написать #' @importFrom utils getFromNamespace
или поместить его в свой NAMESPACE вручную.