returns 自定义 R 包中的函数

Function that returns a function in custom R package

我的问题与此有关:Function that returns a function in R 但是,我正在尝试创建一个 R 包。我有以下函数,它使用存储在 sysdata.rda 中的名为 NInput 的数据框。我想 return 使用 approxfun() 函数的函数。我希望这个包的用户能够调用 Nfun(Dates),其中 Dates 是使用 approxfun() 创建的函数的通常输入。

#' A function to return interpolated N input data
#'
#' function to return interpolated N input data for decimal dates
#' @param Dates A scalar or vector of decimal input dates
#' @keywords nitrogen
#' @export
#' @examples
#' Nfun()

Nfun <- function(){
 NInput$Date
 NInput$Ninput
 Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2)
 }

但是,当我使用此函数安装包并在加载包后在我的 R 会话中调用 Nfun(1900) 时,我得到:

   Error in Nfun(1900) : unused argument (1900)

如果我设置

 Nfun <- Nfun() 

在 Nfun.R 脚本之外,在加载包后的活动 R 会话中,我的函数出现在全局环境中,我可以调用

 Nfun(1900)
[1] 0.7846106

但是,我不希望用户必须这样做。我在想我在如何定义我的包功能方面犯了一些基本错误,但我很困惑。

您的 Nfun 实现没有参数,因此发生错误。

如果我没理解错的话,你想通过approxfunNfun和returns函数的值来让用户输入函数,对吗? 如果是这样,以下应该有效。

Nfun <- function(x){
  NInput$Date
  NInput$Ninput
  Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2)(x)
}