Я пытаюсь написать свой первый пакет R. Функции в пакете зависят от функции getURL() из пакета RCurl. Я последовал за учебники по: http://r-pkgs.had.co.nz/ и http://hilaryparker.com/2014/04/29/writing-an-r-package-from-scratch/Создайте пакет R с зависимостями
Я установил RTools, DevTools и roxygen2 для написания документации и построения пакета.
Название моей упаковки - «waterml». В моем пакете у меня есть папка R с 3 файлами GetSites.R, GetVariables.R, GetValues.R. Каждый файл имеет одну функцию:
#' GetSites
#' @import XML
#' @importFrom RCurl getURL
#' This function gets the table of sites from the WaterML web service
#' @param server The URL of the web service ending with .asmx,
#' for example: http://worldwater.byu.edu/interactive/rushvalley/services/cuahsi_1_1.asmx
#' @keywords waterml
#' @export
#' @examples
#' GetSites("http://worldwater.byu.edu/interactive/rushvalley/services/cuahsi_1_1.asmx")
GetSites <- function(server) {
sites_url <- paste(server, "/GetSitesObject", sep="")
text <- RCurl::getURL(sites_url)
doc <- xmlRoot(xmlTreeParse(text, getDTD=FALSE, useInternalNodes = TRUE))
return(doc)
}
Теперь, когда я пытаюсь построить пакет:
library(devtools)
document()
Стадию документ() завершается без ошибок. Теперь я бегу:
setwd("..")
install("waterml")
Но я получаю ошибку:
* installing *source* package 'waterml' ...
** R
** preparing package for lazy loading
Error : object 'function' is not exported by 'namespace:RCurl'
ERROR: lazy loading failed for package 'waterml'
* removing 'C:/Program Files/R/R-3.1.2/library/waterml'
Когда я проверил мой файл NAMESPACE, он содержит какие-то странные строки:
# Generated by roxygen2 (4.0.2.9000): do not edit by hand
export(GetSites)
export(GetValues)
export(GetVariables)
import(RCurl)
import(XML)
importFrom(RCurl,"function")
importFrom(RCurl,This)
importFrom(RCurl,WaterML)
importFrom(RCurl,data)
importFrom(RCurl,from)
importFrom(RCurl,getURL)
importFrom(RCurl,gets)
importFrom(RCurl,of)
importFrom(RCurl,series)
importFrom(RCurl,service)
importFrom(RCurl,sites)
importFrom(RCurl,table)
importFrom(RCurl,the)
importFrom(RCurl,time)
importFrom(RCurl,values)
importFrom(RCurl,variables)
importFrom(RCurl,web)
Я думаю, что ошибка в официальном заявлении:
importFrom(RCurl, "function")
Какие-нибудь идеи могут быть проблемой? Я использую @importFrom в документации моей функции правильно?
Затем удалите '@importFrom RCUrl getURL', так как OP делает' RCurl :: getURL() ' – hadley
@hadley, не лучше ли удалить RCURL ::'? Честно говоря, я даже не видел «RCurl :: getURL». Если я не понимаю, кажется, что вы предлагаете ввести неявную зависимость (т. Е. Нет «импорт (RCurl)» в NAMESPACE). – BrodieG
Или, может быть, OP имеет '@ import' где-то еще? – BrodieG