Неожиданное поведение функции, используемой вместе с lapply / sapply? - PullRequest
0 голосов
/ 19 февраля 2020

Этот

mult_six <- function(x) {
  y <- x * 6
}

mult_six(7)

ничего не возвращает (как и ожидалось), а y не назначается глобально (также как и экспетируется, поскольку назначение происходит в области действия функции, а не в родительской среде - поэтому y возвращает Error: object 'y' not found - полностью нормально)

Но

sapply(c(1,2,3), mult_six)

возвращает

[1]  6 12 18

lapply() возвращает список эквивалентный).

Я не понимаю, почему lapply / sapply будет вести себя иначе, чем вызов функции для каждого элемента в отдельности?

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Как мы знаем, функции по умолчанию возвращают последнюю строку в функции, однако, поскольку в этой функции присваивается значение, результат не отображается явно, но если вы используете print, вы можете увидеть его.

print(mult_six(7))
#[1] 42
0 голосов
/ 19 февраля 2020

Мы можем просто обернуть с ()

(mult_six(7))
#[1] 42

Назначение на y<- не требуется. Это было бы

mult_six <- function(x) {
     x * 6
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...