Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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_Scope_Package - Fatal编程技术网

R包开发:如何使用变量保存某些状态? 最小情景

R包开发:如何使用变量保存某些状态? 最小情景,r,scope,package,R,Scope,Package,假设一个包需要监控它自己的使用情况。例如,自加载包后调用包的特定函数的次数 实现这一目标的最佳方式是什么 第一个想法 我试图在.onLoad()函数中创建一个变量: ## R/zzz.R .onLoad <- function(libname, pkgname) { how_many_times <- 0 } 但它也不起作用!当我调用函数count\u me时,第一个定义的全局多少次不会改变,但它是另一个变量,作为修改后的函数内部的闭包。第二个是可以接受的方法,可能是最简单

假设一个包需要监控它自己的使用情况。例如,自加载包后调用包的特定函数的次数

实现这一目标的最佳方式是什么


第一个想法 我试图在
.onLoad()函数中创建一个变量:

## R/zzz.R

.onLoad <- function(libname, pkgname) {
  how_many_times <- 0
}

但它也不起作用!当我调用函数
count\u me
时,第一个定义的全局
多少次不会改变,但它是另一个变量,作为修改后的函数内部的闭包。

第二个是可以接受的方法,可能是最简单、最直接的方法。您不需要手动删除它,因为卸载包应该允许R自然地执行垃圾收集(命名空间删除)。
## R/somefile.R

#' @exports
how_many_times <- 0

#' @exports
count_me <- function() {
  how_many_times <<- how_many_times + 1
  how_many_times
}