R中具有全局变量的单元测试函数 序言:包结构

R中具有全局变量的单元测试函数 序言:包结构,r,unit-testing,global-variables,r-package,R,Unit Testing,Global Variables,R Package,我有一个R包,其中包含一个R/globals.R文件,简化了以下内容: utils::全球变量 然后我有一个简单使用这个变量的函数。例如,R/addx.R包含一个将数字添加到计数的函数 addx我认为您误解了utils::globalVariablesCOUNTS的功能。它只是声明COUNTS是一个全局变量,因此当代码分析看到 addx <- function(x) { COUNTS + x } 因为它似乎使用了一个名为Col1的全局变量,但这当然没问题,因为子集函数的计算方式是

我有一个R包,其中包含一个R/globals.R文件,简化了以下内容:

utils::全球变量 然后我有一个简单使用这个变量的函数。例如,R/addx.R包含一个将数字添加到计数的函数


addx我认为您误解了utils::globalVariablesCOUNTS的功能。它只是声明COUNTS是一个全局变量,因此当代码分析看到

addx <- function(x) {
    COUNTS + x
}

因为它似乎使用了一个名为Col1的全局变量,但这当然没问题,因为子集函数的计算方式是非标准的,允许您在不写入df$Col的情况下包含列名。

我想您误解了utils::GlobalVariableSconts的功能。它只是声明COUNTS是一个全局变量,因此当代码分析看到

addx <- function(x) {
    COUNTS + x
}

因为它似乎使用了一个名为Col1的全局变量,但这当然没问题,因为subset函数的计算方式是非标准的,允许您在不写入df$Col的情况下包含列名。

@user2554330的答案在很多方面都很好

如果我理解正确,您有一个需要更新的计数,因此将其放入包环境可能是一个问题

您可以使用的一种技术是使用本地环境

两个备选方案:

如果它总是在一个函数中引用,那么从


myfunc@user2554330的答案在很多方面都很好

如果我理解正确,您有一个需要更新的计数,因此将其放入包环境可能是一个问题

您可以使用的一种技术是使用本地环境

两个备选方案:

如果它总是在一个函数中引用,那么从


myfunc是在函数定义之外的包/R/*.R中定义的计数吗?我能想到的另一种情况是,您希望在调用环境中定义计数。如果是这样,那么。。。我认为答案是不要这样做。@r2evans,有两个函数可以执行计数赋值。clearGlobal基本上将其初始化为COUNTS,COUNTS是在一个包/R/*.R中定义的,在函数定义之外?我可以想到的另一种情况是,您希望在调用环境中定义COUNTS。如果是这样,那么。。。我认为答案是不要这样做。@r2evans,有两个函数可以执行计数赋值。clearGlobal基本上将其初始化为COUNTS Thank,adding COUNTS Thank,adding COUNTS Thank,以共享多个解决方案。这将是非常有用的,因为我在我的包上取得了进展。干杯感谢您分享多种解决方案。这将是非常有用的,因为我在我的包上取得了进展。干杯
COUNTS <- 0
subset(df, Col1 < 0)