Заказ ОПИСАНИЕ Импорт: и импорт NAMESPACE() в R 2.14.0 проверка пакетов

Я пытаюсь преследовать то, что кажется конфликтом между именами функций, когда я проверяю пакет. В конце концов, я могу спросить о проблеме, но сначала я задаюсь вопросом о трех вещах, ни одна из которых, похоже, не упоминается в R-exts:

  • Пакеты, перечисленные в ОПИСАНИИ: Импорт и импорт NAMESPACE() должны быть одинаковыми, правильно?
  • В любом списке, есть ли порядок импорта? Если да, есть ли общий совет о том, как их упорядочить?
  • Я использую R -vanilla CMD для проверки pkg_name, чтобы избежать вмешательства моего .Rprofile. Когда мой .Rprofile активен и содержит операторы библиотеки (pkg_name), выполняет ли это порядок?

Ответ 1

Вы задали три вопроса.

1. Список пакетов в DESCRIPTION, а также NAMESPACE

Каждый пакет, указанный в DESCRIPTION Imports:, должен иметь соответствующую запись NAMESPACE import(...). Запись в DESCRIPTION может содержать информацию о версии, но в NAMESPACE вы указываете только пакет.

Примечание для неосторожного: Заклинание Imports с капиталом I и завершение s в ОПИСАНИЕ

Например:

ОПИСАНИЕ

Imports:
    stringr (>= 0.5)

NAMESPACE

import(stringr)

2. Вопросы для заказа

Пакеты, которые вы load или import позже, маскируют ранее загруженные или импортированные ранее пакеты. Это имеет значение только при импорте пакетов, которые экспортируют функцию с одинаковым именем.

Например, оба lattice и ggplot2 экспортируют функцию layer. Таким образом, если вы сначала импортируете lattice, а затем ggplot2, это означает, что ggplot2::layer будет маскировать lattice::layer.

Другими словами, использование layer будет относиться к ggplot2::layer. Если вы хотите обратиться к версии lattice, вам нужно явно ссылаться на lattice::layer в вашей функции.

3. Порядок загрузки пакетов также имеет значение

По той же причине порядок загрузки пакетов (либо в script, либо в .Rprofile) имеет значение. Любой новый пакет, который вы загружаете, будет маскировать функции с тем же именем в ранее загруженных пакетах.

Когда это произойдет, R делает разумную вещь и сообщает об этом в сообщении консоли.

Вот пример маскировки, возникающий при загрузке пакета reshape, который зависит от plyr, но также маскирует некоторые функции в plyr:

library(reshape)
Loading required package: plyr

Attaching package: 'plyr'

The following object(s) are masked from 'package:braidppt':

    .


Attaching package: 'reshape'

The following object(s) are masked from 'package:plyr':

    rename, round_any