Лучшие практики для Roxygen Imports/Depends?

Я пишу небольшой удобный пакет для доступа к частному API и использую функции httr для выполнения запросов. Я также использую Roxygen для обработки документации и т. д. Я импортирую httr функции как таковые:

#' Get a page of data from the specified endpoint.
#' @keywords internal
#' @importFrom httr GET
#'
get_data <- function(url, headers, page_number) {
  # Add querystring for page
  url_with_page <- paste0(url, "?page=", page_number)
  message("Downloading: ", url_with_page)
  # Get API response
  response <- GET(url_with_page, headers)
  return(response)
}

Однако, когда вы пытаетесь запустить пакет без предварительно загруженных пакетов, я получаю ошибки пространства имен:

Error in get_data(url, headers, 1) : 
  could not find function "GET"

Обычно я полагаюсь на опыт Хэдли в подобных вещах, но хороший случай для использования поля Depends, а/а не Imports?

Изменить: мое ПРОСТРАНСТВО ИМЕН, созданное Roxygen.

# Generated by roxygen2 (4.1.1): do not edit by hand

export(get_export)
export(get_exports)
export(get_metadata)
importFrom(httr,GET)
importFrom(httr,add_headers)
importFrom(httr,content)
importFrom(jsonlite,fromJSON)
importFrom(jsonlite,rbind.pages)

Изменить: мой файл DESCRIPTION.

Package: APIpack
Type: Package
Title: APIpack
Version: 0.1
Date: 2016-01-04
Authors: "Matt Policastro"
Description: This package provides a set of convenience functions.
License: Proprietary
LazyData: TRUE
Imports: httr,
    jsonlite
Suggests: testthat

person mattpolicastro    schedule 01.02.2016    source источник
comment
В вашем файле NAMESPACE есть importFrom(httr, GET)?   -  person nrussell    schedule 01.02.2016
comment
Единственный случай использования Depends вместо Imports — это если вы считаете, что ваш конечный пользователь, вероятно, хочет использовать функции httr напрямую всякий раз, когда они загружают ваш пакет.   -  person Gregor Thomas    schedule 01.02.2016
comment
Я чувствую, что @depends и @importFrom x относятся к документации пакета больше, чем к определению функции. Также следует отметить, что importFrom будет работать, только если вы вызываете пакет напрямую, а не если вы вызываете пакет через зависимость.   -  person Brandon Bertelsen    schedule 01.02.2016
comment
Иногда я добавляю директиву @importFrom в документы функций, но забываю, чтобы roxygen перестраивал файл NAMESPACE.   -  person joran    schedule 01.02.2016
comment
Только что добавил мой файл NAMESPACE; упомянутые вами директивы, кажется, присутствуют, но я все еще получаю сообщение об ошибке. @BrandonBertelsen, повлияет ли это на внутреннюю функцию, как я указал выше?   -  person mattpolicastro    schedule 01.02.2016
comment
Разве файл DESCRIPTION не требует, чтобы пакет был указан в разделе Imports:?   -  person cdeterman    schedule 01.02.2016
comment
@cdeterman Только что добавил мой файл ОПИСАНИЯ.   -  person mattpolicastro    schedule 01.02.2016
comment
Если вы используете RStudio, я часто забываю проверить Сборка и перезагрузка в параметрах проекта > Инструменты сборки > Настроить...   -  person Brandon Bertelsen    schedule 01.02.2016
comment
Итак, если вы используете сценарий, в котором вы вызываете библиотеку (APIpack) напрямую (а не зависимость от другого пакета), он должен работать так, как ожидалось. Но importFrom должен быть в вашем файле описания, поэтому я предложил вам поместить его в документацию пакета вместо функции.   -  person Brandon Bertelsen    schedule 01.02.2016
comment
Неважно, находится ли @importFrom в документации функции или в документации пакета. roxygen соберет все @importFrom и @import роклеты, которые сможет найти, и добавит соответствующие строки в файл NAMESPACE. Это также гарантирует, что ни одна строка не повторяется (даже если один и тот же @importFrom появляется в нескольких местах).   -  person Stibu    schedule 01.02.2016
comment
@cdeterman Да, он тоже должен быть под DESCRIPTION Imports, но в данном случае это не имеет значения. Список пакетов в ОПИСАНИЕ Imports используется только при установке пакета, чтобы убедиться, что пакеты, необходимые для импорта, также установлены. Здесь OP тестирует пакет на своей машине, поэтому можно с уверенностью предположить, что httr установлен.   -  person Gregor Thomas    schedule 01.02.2016
comment
Не хочу быть мокрым одеялом, но, учитывая ОПИСАНИЕ и ПРОСТРАНСТВО ИМЕН, которые я предоставил, есть ли что-нибудь, что я должен сделать, кроме как просто включить мои зависимости в ОПИСАНИЕ Зависит? Потому что это единственный способ заставить пакеты правильно загружаться (возможно, ошибка?). Или, как предлагает @BrandonBertelsen, я должен явно загружать библиотеку из определения моей функции.   -  person mattpolicastro    schedule 08.02.2016
comment
Этот ответ содержит полезную информацию и советы   -  person stevec    schedule 14.04.2019