Вы задали три вопроса.
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.Порядок загрузки пакетов также имеет значение
По той же причине имеет значение порядок загрузки пакетов (либо в скрипте, либо в .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