【问题标题】:Function that returns a function in custom R package返回自定义 R 包中的函数的函数
【发布时间】:2018-04-16 13:59:18
【问题描述】:

我的问题与这个有关:Function that returns a function in R 但是,我正在尝试创建一个 R 包。我有以下函数,它使用存储在 sysdata.rda 中的称为 NInput 的数据帧。我想使用 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

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

【问题讨论】:

标签: r function package devtools


【解决方案1】:

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

如果我理解正确,您想通过approxfunNfun 创建一个函数,返回该函数的值供用户输入,对吗? 如果是这样,以下应该可以工作。

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

【讨论】:

  • 我还希望它可以打印这些值,而无需将它们分配给一个对象来查看它们。你会推荐类似的东西:print(Nfun(x))?
  • print 有效。 catand message` 将是其他候选人。
猜你喜欢
  • 2013-12-21
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多