On Fri, Oct 8, 2010 at 12:14 PM, Duncan Murdoch <murdoch.dun...@gmail.com>wrote:
> Vitalie Spinu wrote: > >> Hello Everyone! >> >> NULL replacement will change expression object into list: >> >> >> >>> te <- expression(a=23*4, b=33-2) >>> te >>> >>> >> expression(a = 23 * 4, b = 33 - 2) >> >> >> >>> te[["a"]] <- quote(blabla) #ok >>> te >>> >>> >> expression(a = blabla, b = 33 - 2) >> >> >> >>> te[["a"]] <- NULL #change to list >>> te >>> >>> >> $b >> 33 - 2 >> >> I am on w32, version 2.11.1 (2010-05-31) >> >> > > That's certainly an inconsistency, still present in a recent R-devel (but I > haven't checked the latest beta). I don't know if it's a bug: NULL > assignments are handled specially in other situations (e.g. if te was a list > to start, the NULL assignment would remove the "a" entry). > > A simple workaround is to use > > te["a"] <- expression(NULL) > > or te <- te[-1] > > instead, depending on what you expected to happen. > As ussual with NULL assignment in recursive structures, I would expect to remove the elements altogether. And this is exactly what I need. I would say it's a bug, because NULL assignment in data.frames would not convert them to lists, for example. Thanks for looking into it. It's quite inconvenient when you have to manipulate named expression. Have to use constructs like et<-et[!names(et)%in%"a"]. Vitally. > > Duncan Murdoch > > Regards, >> Vitally. >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> > > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel