Я заметил, что некоторые ответы на SO содержат использование pkg::name
, где имя обычно является функцией.Основное использование (ы) «pkg :: name»
В чем преимущество этого library(pkg); ... name()
или require(pkg); ... name()
? R помощь (help("::")
) говорит
Для пакета PKG, PKG :: имя возвращает значение экспортируемого имени переменной в пространстве имен упак ... Пространство имен будет загружен, если он не был загружен до вызова , но пакет не будет привязан к пути поиска.
Означает ли это, что функция используется без дополнительной потери памяти загрузки всего пакета (т.е. это эквивалентно import <function> from <package>
) в Python? Или это просто способ сказать R использовать функцию из этого пакета, когда могут быть двусмысленности?
Мой вопрос касается использования ::
в качестве Rscript или непосредственно в консоли и поэтому не является дубликатом связанного вопроса, как ОР в этом вопросе обсуждается использование функций из stats4
пакета во время разработки пакета проект. С другой стороны, в этом посте, кажется, есть ответы, которые проливают некоторый свет на мой вопрос. Спасибо за ссылку. (Обратите внимание на следующее обсуждение по Meta: duplicates flag)
@ kristang Мой вопрос на самом деле не является дубликатом связанного вопроса, так как ОП в этом вопросе обсуждает использование функций из пакета 'stats4' во время проекта разработки пакета. С другой стороны, в этом посте, кажется, есть ответы, которые проливают некоторый свет на мой вопрос. Спасибо за ссылку. – lmo
Использование '::' будет устранять неоднозначность функций, имеющих одно и то же имя в нескольких пакетах, тогда как обычно используется функция из последнего загруженного пакета. Например, 'library (pryr); library (data.table) ': *" Следующий объект маскируется из 'package: data.table': address "*. В этом случае это не имеет большого значения, потому что функция «address», предоставляемая каждым из этих пакетов, имеет практически одно и то же, но это не всегда так. Любая разница в памяти или производительности между 'library (pkg)' vs 'pkg :: fun', скорее всего, невелика. – nrussell
Соответствующая [дискуссия] (http://r-pkgs.had.co.nz/namespace.html) темы. – nrussell