Почему r str меняет оценку - PullRequest
0 голосов
/ 21 октября 2018

Использование str () может изменить оценку, почему?

MWE:

f1 <- function(x, y = x) {
  str(y)
  x <- x + 1
  y }
 f1(1) # result is 1

f2 <- function(x, y = x) {
  x <- x + 1
  y }
 f2(1) # result is 2

Почему это происходит?Я пытался использовать библиотеку pryr для отладки, но не вижу обновляемых ссылок.

1 Ответ

0 голосов
/ 21 октября 2018

Ленивая оценка.Это когда оценивается y = x.Он вычисляется непосредственно перед первым оператором, который использует y.

## f1
y <- x
str(y)  ## first use of y
x <- x + 1
y

## f2
x <- x + 1
y <- x
y  ## first use of y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...