"$ <-" и окружение - PullRequest
       28

"$ <-" и окружение

3 голосов
/ 05 июня 2011

Почему не работает следующее?Т.е. почему вызов "$ <-" в среде не оказывает видимого эффекта вне функции? </p>

myAssign <- function(env, name, value) {
  "$<-"(env, name, value)
}
e <- new.env()
myAssign(e, "x", 1)
e$x  # NULL

А также

myAssign(e, "x", 1)$x  # NULL

Принимая во внимание, что если мы сделаем этона верхнем уровне:

"$<-"(e, "x", 1)
e$x  # 1

Спасибо!

1 Ответ

7 голосов
/ 05 июня 2011

Это имеет эффект, но не тот, который вы ищете!

> myAssign(e, "x", 1)
<environment: 0x1dcd198>
> ls(e)
[1] "name"

Причина в том, что $<- оценивает свой второй аргумент нестандартным способом (как и должно быть, чтобы получить x вместо eval(x) в e$x <- 1, если это имеет смысл. Попробуйте env[[name]] <- value

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