Пакет R: как заставить мой пакет загружать другой пакет, когда я загружаю свой пакет в библиотеку

#r #r-package #roxygen2

#r #r-package #roxygen2

Вопрос:

Я создал свой собственный пакет под названием «test» и устанавливаю его. Однако существует некоторая проблема.

Например, в моем файле .R я использую функцию «rowQuantiles» из другого пакета под названием «matrixStats».

И я уже добавляю

 import(matrixStats)
  

в файл пространства имен

и добавьте

 Imports:matrixStats (>= 0.57.0)
  

в файл описания.

Однако всякий раз, когда я загружаю свой собственный пакет

 library(test)
  

Всегда появляется следующая ошибка

 could not find function "rowQuantiles"
  

Как я могу сделать так, чтобы всякий раз, когда я загружаю свой собственный пакет, он загружал другие необходимые пакеты. Точно так же, как следующее

 > library(ggpubr)
Loading required package: ggplot2
  

Комментарии:

1. попробуйте получить функцию из другого пакета, используя эту грамматику package::method() для вызова метода в свой пакет, он также должен загрузить с ним все необходимые зависимости для этого метода.

2. @sconfluentus Привет, спасибо, в какой файл я должен поместить «package::method ()»

3. Извините, возможно, я не совсем ясно выразился. Вы бы заменили слово package на имя пакета, из которого вы будете использовать функцию / метод, а затем заменили method() на фактическую функцию, и пример: dplyr::select( ) имеет ли это смысл?

Ответ №1:

Ключ к пониманию этого — понять разницу между загрузкой пакета и присоединением пакета.

Пакеты, перечисленные ниже Imports: , загружаются только тогда, когда ваш пакет подключен, то есть когда вы это делаете library(mypkg) . Напротив, пакеты, перечисленные ниже Depends: , загружаются и прикрепляются. Итак, если вы используете:

 Depends: matrixStats
  

тогда все функции matrixStats будут находиться в search() пути, когда ваш пакет будет подключен.