R 函数内的数据(包创建)

R 函数内的数据(包创建),r,R,如果我需要在正在创建的包中使用函数内部的数据集(作为查找表),我是否需要在函数内部显式加载数据集 函数和数据集都是我的包的一部分 这是在函数中使用该数据集的正确方法吗: foo <- function(x){ x <- dataset_in_question } foo在R-devel上有一篇关于这个主题的文章(在包开发的背景下),其中有许多观点与这个问题相关: 如果您提供的选项仅适用于您的示例,R本人(即)会告诉您: foo <- function(x){ d

如果我需要在正在创建的包中使用函数内部的数据集(作为查找表),我是否需要在函数内部显式加载数据集

函数和数据集都是我的包的一部分

这是在函数中使用该数据集的正确方法吗:

foo <- function(x){
    x <- dataset_in_question
}
foo在R-devel上有一篇关于这个主题的文章(在包开发的背景下),其中有许多观点与这个问题相关:

  • 如果您提供的选项仅适用于您的示例,R本人(即)会告诉您:

    foo <- function(x){
       data("dataset_in_question")
    }
    

    foo对于我来说,除了
    DESCRIPTION
    文件中的
    LazyData:true
    之外,还需要使用
    get()
    ,以摆脱注释
    全局变量没有可见绑定…
    。我的R版本是
    3.2.3

    foo <- function(x){
        get("dataset_in_question")
    }
    

    foo可以将数据集作为.rda文件放在R文件夹中,如Hadley所述:

    Matthew Jockers在syuzhet数据包中使用了这种方法,包括
    bing
    数据集,如第452行所示:

    bing
    对用户不可用,但对软件包可用,如所示:
    syuzhet:::bing


    本质上,命令
    devtools::use_data(…,internal=TRUE)
    将以所需的方式设置所有内容。

    Mhh…我将在函数中使用apply函数,并在数据集中使用函数,但在这种情况下,这可能不是一个选项…我几乎可以肯定它是选项(1)。好的,您可以使用
    data()
    来计算它的副作用,而不是返回值。实际上,
    data()
    的返回值只是数据集的名称,而不是实际变量。例如,尝试一下,
    x如果您仅将数据集用作查找表而不更改它,是否需要创建新的相同对象?如果有需要,可以考虑将表作为一个正式的参数添加到函数中(<代码> x= DATABETIGNIN问题< /代码>)。deprecated@jzadra没什么大不了的,只是被移动到了usethis包中,作为
    usethis::use_data
    foo <- function(x){
        get("dataset_in_question")
    }