Функция, которая находится внутри другой функции - PullRequest
0 голосов
/ 28 июня 2018
x<-2, y<-4
sum.xy <- function(x){
      function(y){x + y}
}

В приведенном выше коде я не понимаю, почему sum.xy() просто дает нечисловое значение, кто-нибудь может объяснить?

1 Ответ

0 голосов
/ 26 июля 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...