私は次のように外部データを使用する関数を書いています:
まず、データがdata
/フォルダーにあるかどうかを確認し、ない場合はdata
/フォルダーを作成してから、githubからファイルをダウンロードします。
データがすでにdata/
フォルダー、それを読み取り、計算を実行します。
問題は、私が実行すると:
devtools::check()
それは返します:
Error: 'data' is not an exported object from 'namespace:my_package'
NAMESPACE
に何かを手動で置く必要がありますか?
例:
my_function <- function(x){
if(file.exists("data/data.csv")){
my_function_calculation(x = x)
} else {
print("Downloading source data...")
require(RCurl)
url_base <-
getURL("https://raw.githubusercontent.com/my_repository/data.csv")
dir.create(paste0(getwd(),"/data"))
write.table(url_base,"data/data.csv", sep = ",", quote = FALSE)
my_function_calculation(x = x)
}
}
my_function_calculation <- function(x = x){
data <- NULL
data <- suppressMessages(fread("data/data.csv"))
#Here, I use data...
return(data)
}
すべてのケースで同じとは限りませんが、data.R
フォルダのR/
ファイルを削除することで問題を解決しました。
data.R
は、パッケージに含まれるすべてのデータを説明するファイルです。以前のバージョンのコード以降、リモートではなく(ダウンロードするために)データが組み込まれていました。ファイルを削除すると問題が解決しました。
Data.Rの例:
#' Name_of_the_data
#'
#' Description_of_the_Data
#'
#' @format A data frame with 10000 rows and 2 variables:
#' \describe{
#' \item{Col1}{description of Col1}
#' \item{Col2}{description of Col2}
#' }
"data_name"
/ Rフォルダー内のdata.Rを削除する必要はありません。[ 〜#〜] null [〜#〜]キーワードは次のとおりです。
#' Name_of_the_data
#'
#' Description_of_the_Data
#'
#' @format A data frame with 10000 rows and 2 variables:
#' \describe{
#' \item{Col1}{description of Col1}
#' \item{Col2}{description of Col2}
#' }
NULL
エラーに困惑したとき
Error: 'data' is not an exported object from 'namespace:my_package'
上記のMrFlickのコメントは私を救いました。データフォルダー内の.rdaファイルの名前を変更しただけです。 NAMESPACEファイルを再作成するためのdevtools :: document()を取得できませんでした。解決策は、データを.rdaファイルに再保存することでした。 (もちろん、.rdaファイルからロードする場合、Rオブジェクトの名前は.rdaファイルの名前とは関係がないため、.rdaファイルの名前を変更してもあまり効果がないことを覚えておく必要があります。)