Lazy evaluation in R – is assign affected? -
i read this basic question on renaming objects , @shane 's reply it, pointing me lazy evaluation. wonder if assign
evaluated lazily, too. here:
assign("somenewname",someoldobject) rm(someoldobject)
the reason why wonder next utilize case: assume got 10k+ r objects each of has 2 attributes called originalname
, additionalname
. want write function can efficiently allow user switch 1 name other without losing these 2 attributes. this...
edit: based on @hadley's input have changed code.
switchobjectname <- function(x) { n1 <- attributes(x)$originalname n2 <- attributes(x)$additionalname objname <- deparse(substitute(x)) if(objname == n1) { delayedassign(n2,x,assign.env=.globalenv) } else { delayedassign(n1,x,assign.env=.globalenv) } rm(list=c(objname),envir=.globalenv) }
this works well, had quite problem rm
statement right. tried rm(objname,envir=.globalenv)
not work though objname character cause result of deparse(substitute(x)
.
r lazy-evaluation assign
No comments:
Post a Comment