Я определил функцию с именем once
следующим образом:
once <- function(x, value) {
xname <- deparse(substitute(x))
if(!exists(xname)) {
assign(xname, value, env=parent.frame())
}
invisible()
}
Идея состоит в том, что value
отнимает много времени для оценки, и я хочу назначить его только для x
при первом запуске сценария.
> z
Error: object 'z' not found
> once(z, 3)
> z
[1] 3
Мне бы очень хотелось, чтобы использование было once(x) <- value
, а не once(x, value)
, но если я напишу функцию once<-
, то расстроится, что переменная не существует:
> once(z) <- 3
Error in once(z) <- 3 : object 'z' not found
У кого-нибудь есть способ обойти это?
пс: есть имя для описания таких функций, как once<-
или вообще f<-
?