首页 > 解决方案 > 另一个函数内部的函数

问题描述

x<-2, y<-4
sum.xy <- function(x){
      function(y){x + y}
}

在上面的代码中,我不明白为什么sum.xy()只给出一个非数值,有人能解释一下吗?

标签: r

解决方案


R 中任何函数的输出都在内部,return或者如果没有return(如您的情况),则返回最后一个“打印对象”。在你的,函数sum.xy返回一个函数:即函数function(y){x+y}

你可以这样测试:

x<-2; y<-4
sum.xy <- function(x){
  function(y){x + y}
}

class(sum.xy)
class(sum.xy(7))
sum.xy(7)

所以 sum.xy(7) 实际上是一个给定y返回的函数y + 7。如果你写sum.xy(7)(4),则返回 7+4。

我还建议您看一下高级 R 的这一章


推荐阅读