如果我需要在我正在创建的包内的函数内使用数据集(作为查找表),我是否需要在函数内部显式加载数据集?
函数和数据集都是我的包的一部分.
这是在函数内使用该数据集的正确方法:
foo <- function(x){
x <- dataset_in_question
}
Run Code Online (Sandbox Code Playgroud)
或者这更好:
foo <- function(x){
x <- data(dataset_in_question)
}
Run Code Online (Sandbox Code Playgroud)
还是有一些方法我没想到这是正确的?
Hen*_*rik 11
最近关于R-devel的这个主题(在包开发的背景下)进行了讨论,其中许多要点与这个问题相关:
如果您提供的选项仅适用于您的示例R本人(即Brian Ripley)告诉您:
foo <- function(x){
data("dataset_in_question")
}
Run Code Online (Sandbox Code Playgroud)然而,这种方法将在R CMD检查中抛出一个注释,这可以通过使用John Chambers添加的globalVariables()
函数在即将到来的R版本(或当前的R devel)中避免.
"正确"方法(即Brian Ripley和Peter Dalgaard提倡的方法)将使用LazyData选项作为您的包.请参阅"编写R扩展"一节.
顺便说一句:我不完全明白你的第一种方法应该如何运作.该怎么x <- dataset_in_question
办?是dataset_in_question
全局变量还是之前定义的?
人们可以将数据集作为 .rda 文件放置在 R 文件夹中,如 Hadley 所描述: http: //r-pkgs.had.co.nz/data.html#data-sysdata
Matthew Jockers 在syuzhet包中使用这种方法来处理数据集,包括bing
此处第 452 行的数据集: https: //github.com/mjockers/syuzhet/blob/master/R/syuzhet.R
bing
对用户不可用,但对包可用,如下所示:syuzhet:::bing
本质上,该命令devtools::use_data(..., internal = TRUE)
将按照需要的方式设置一切。