Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向R包中添加未报告的函数_R_Function_R Package - Fatal编程技术网

如何向R包中添加未报告的函数

如何向R包中添加未报告的函数,r,function,r-package,R,Function,R Package,我正在开发一个R包,其中包含几个函数,我在一个导出函数中使用这些函数 我的问题,可能是个愚蠢的问题,我应该把所有这些未报告的函数放在哪里?或者我怎样才能做到这一点 我不想让用户从R/目录访问此函数 下面是我虚构的函数,它使用未报告的函数add: 多谢各位 编辑 如果我将所有函数放入/R中,它们将对用户可见。例如,从xgboost包生成的generate.cv.folds未报告,但您仍然可以使用xgboost::generate.cv.folds访问它,我也希望这样做。R不提供隐藏源代码的基础结构

我正在开发一个R包,其中包含几个函数,我在一个导出函数中使用这些函数

我的问题,可能是个愚蠢的问题,我应该把所有这些未报告的函数放在哪里?或者我怎样才能做到这一点

我不想让用户从R/目录访问此函数

下面是我虚构的函数,它使用未报告的函数add:

多谢各位

编辑
如果我将所有函数放入/R中,它们将对用户可见。例如,从xgboost包生成的generate.cv.folds未报告,但您仍然可以使用xgboost::generate.cv.folds访问它,我也希望这样做。

R不提供隐藏源代码的基础结构[1]。这样做违背了R开发者的价值观和愿望

所以,你想要做的是不可能的


[1] R不提供隐藏源代码的基础结构[1]。这样做违背了R开发者的价值观和愿望

所以,你想要做的是不可能的


[1]

导出/不导出函数就像在函数文档中添加一行一样简单。我假设你正在使用roxygen2来记录你的包

出口:

#' Add two numeric values
#'
#' This function returns the sum of two values.
#' @param x,y Numeric values.
#' @return Numeric.
#' @export
add1 <- function(x, y) {
 result <- x + y
 return(result)
}
未导出:

#' Add two numeric values.
#'
#' This function returns the sum of two values.
#' @param x,y Numeric values.
#' @return Numeric.
add2 <- function(x, y) {
 result <- x + y
 return(result)
}
请注意文档末尾缺少@export。创建文档时,名称空间文件如下所示:

出口地址1


但是它不会有add2的条目。

导出/不导出函数就像在函数的文档中添加一行一样简单。我假设你正在使用roxygen2来记录你的包

出口:

#' Add two numeric values
#'
#' This function returns the sum of two values.
#' @param x,y Numeric values.
#' @return Numeric.
#' @export
add1 <- function(x, y) {
 result <- x + y
 return(result)
}
未导出:

#' Add two numeric values.
#'
#' This function returns the sum of two values.
#' @param x,y Numeric values.
#' @return Numeric.
add2 <- function(x, y) {
 result <- x + y
 return(result)
}
请注意文档末尾缺少@export。创建文档时,名称空间文件如下所示:

出口地址1


但它不会有add2的条目。

您必须显式导出/R中希望用户通过::机制直接访问的所有函数。所有非显式导出的函数都不会导出,只能通过以下方式访问:。您不能隐藏代码抱歉?@RomanLuštrik,但我可以将这些非显式导出的函数放在何处或如何放置?我知道任何用户都可以使用包:::函数访问任何函数,但我不希望它们在/R中可见。谢谢。您的R代码应该在/R中,好的。至少如果您想要一个完整的包,您必须显式导出/R中您希望用户通过::机制直接访问的所有函数。所有非显式导出的函数都不会导出,只能通过以下方式访问:。您不能隐藏代码抱歉?@RomanLuštrik,但我可以将这些非显式导出的函数放在何处或如何放置?我知道任何用户都可以使用包:::函数访问任何函数,但我不希望它们在/R中可见。谢谢。您的R代码应该在/R中,好的。至少如果你想要一个完整的包裹,我不想隐藏任何东西。我只是不想将函数导出到我的R/。请参阅文章中的编辑。我只想做那样的事。此外,我反对私有源代码,因为我想让用户使用它。我不知道你在问什么。如编写R扩展手册所述,在命名空间文件中指定是否导出函数。在/R目录中定义的函数不是自动导出的。???我想你只是不明白名称空间文件是如何工作的。generate.cv.fold没有导出到那里:这通常是不够的。我鼓励你学习编写R扩展。我不想隐藏任何东西。我只是不想将函数导出到我的R/。请参阅文章中的编辑。我只想做那样的事。此外,我反对私有源代码,因为我想让用户使用它。我不知道你在问什么。如编写R扩展手册所述,在命名空间文件中指定是否导出函数。在/R目录中定义的函数不是自动导出的。???我想你只是不明白名称空间文件是如何工作的。generate.cv.fold没有导出到那里:这通常是不够的。我鼓励你学习写R扩展。