我的问题与此问题有关: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
但是,我不希望用户必须这样做。我以为我在如何定义我的包函数方面犯了一些基本错误,但是我很难过。
答案 0 :(得分:1)
Nfun
的实现没有参数,因此发生错误。
如果我理解正确,你想通过approxfun
创建一个函数,Nfun
返回用户输入函数的值,对吗?
如果是这样,以下情况应该有效。
Nfun <- function(x){
NInput$Date
NInput$Ninput
Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2)(x)
}