Я пишу небольшой удобный пакет для доступа к частному 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
NAMESPACE
естьimportFrom(httr, GET)
? - person nrussell   schedule 01.02.2016Depends
вместоImports
— это если вы считаете, что ваш конечный пользователь, вероятно, хочет использовать функцииhttr
напрямую всякий раз, когда они загружают ваш пакет. - person Gregor Thomas   schedule 01.02.2016@depends
и@importFrom x
относятся к документации пакета больше, чем к определению функции. Также следует отметить, что importFrom будет работать, только если вы вызываете пакет напрямую, а не если вы вызываете пакет через зависимость. - person Brandon Bertelsen   schedule 01.02.2016@importFrom
в документы функций, но забываю, чтобы roxygen перестраивал файл NAMESPACE. - person joran   schedule 01.02.2016Imports:
? - person cdeterman   schedule 01.02.2016@importFrom
и@import
роклеты, которые сможет найти, и добавит соответствующие строки в файл NAMESPACE. Это также гарантирует, что ни одна строка не повторяется (даже если один и тот же@importFrom
появляется в нескольких местах). - person Stibu   schedule 01.02.2016DESCRIPTION Imports
, но в данном случае это не имеет значения. Список пакетов в ОПИСАНИЕ Imports используется только при установке пакета, чтобы убедиться, что пакеты, необходимые для импорта, также установлены. Здесь OP тестирует пакет на своей машине, поэтому можно с уверенностью предположить, чтоhttr
установлен. - person Gregor Thomas   schedule 01.02.2016