Выход любой функции в 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 .