2016-11-09 5 views
-2

Запись R-пакета Я использую пространства имен для использования функций из существующих пакетов, например. raster::writeRaster(...).Необходимо указать пространство имен базового пакета?

Однако, мне интересно, как можно использовать функции из пакета base, например, base::sum(...). Это может привести к очень запутанным кодам:

foo[base::which(base::sapply(bar, function())] 
+2

Мы придерживаемся этой практики, когда существуют 2 или более пакетов с таким же именем функции! поэтому да, база не исключение! –

+0

Хорошо, спасибо. Я этого не знал. – loki

ответ

3

Нет, вам не нужно ссылаться на базовые пакеты, подобные этому. Вам нужно всего лишь ссылаться на не-базовые пакеты, чтобы убедиться, что они загружены в функциональную среду, когда запущены функции из вашего пакета, либо используя ::, либо @import в примечаниях Roxegen в верхней части вашего скрипта. Узнайте, почему вы не должны ссылаться на базовые пакеты ниже:.

http://adv-r.had.co.nz/Environments.html

«Пространство имен пакетов держать пакеты независимы Например, если Пакет использует функцию базового среднего(), что произойдет, если пакет B создает свой (Xadley Wickham)

Единственное время, в течение которого можно использовать функцию среднего(), чтобы пакет A продолжал использовать функцию base(), и пакет A не затрагивается пакетом B. вам нужно ссылаться на base :: is, если пространство имен для вашего пакета содержит пакет, который имеет альтернативную функцию с тем же именем.

 Смежные вопросы

  • Нет связанных вопросов^_^