R 包检查尚未 运行 的函数参数的最佳实践是什么?

What is the R package's best practice to check arguments of functions that have not run yet?

问题定义

在一个包中,用户可以选择不同的选项并根据这些选项传递额外的参数。由于这些函数在计算上具有挑战性,我想在进行任何大规模 运行 之前检查用户是否传递了所需的参数。例如,在下面的代码中:

FunOne <- function(x, y, z,...){
FunTwo(x,y,z, ...) # computationally challenging
FunThree(x,y,z, ...)
}

FunThree 的输入取决于 z 参数。如果 z="option 1",应传递参数 arg1 = 100。如果z = "option 2"arg2 = "value",应该通过。

可能的解决方案

我知道每个选项所需的参数。我想将它们作为全局变量加载,然后仔细检查它们是否通过(例如,pkg.env <- new.env(parent = emptyenv())。我可以在一个单独的函数中执行此操作,运行 在分析开始时使用该函数。

我的问题

  1. 仔细检查 R 包中的参数是否是一种好习惯?
  2. 我怎样才能 运行 在加载包时在后台运行一个函数。请给我一个包端解决方案,而不是用户端解决方案(例如,~/.Rprofile)。我希望在没有用户干预的情况下发生这种情况。

我认为您的建议可行。我对全局变量的value/purpose不是很了解,一般尽量避免这样的事情。但严格来说它会起作用。似乎缺少两件事:

  1. list(...) 会将 ... 值放入列表中,以便您检查它们。请参阅 ....

    的帮助
  2. .onAttach 将在包加载时 运行。这是一个例子:

.onAttach <- function(...) {

  # Do something when the package loads

}

另请注意,您甚至不需要 .onAttach 来填充环境变量。您可以在代码文件的顶部执行此操作。