Ответ 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