在自定义R包中返回函数的函数

时间:2017-11-03 18:39:52

标签: r function package devtools

我的问题与此问题有关:Function that returns a function in R 但是,我正在尝试创建一个R包。我有以下函数,它使用存储在sysdata.rda中的数据框,称为NInput。我想使用approxfun()函数返回一个函数。我希望这个软件包的用户能够调用Nfun(日期),其中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

但是,我不希望用户必须这样做。我以为我在如何定义我的包函数方面犯了一些基本错误,但是我很难过。

1 个答案:

答案 0 :(得分:1)

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

如果我理解正确,你想通过approxfun创建一个函数,Nfun返回用户输入函数的值,对吗? 如果是这样,以下情况应该有效。

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