On Fri, Oct 8, 2010 at 7:49 PM, Duncan Murdoch <murdoch.dun...@gmail.com>wrote:
> On 08/10/2010 12:24 PM, Vitalie Spinu wrote: > >> 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. >> > > I think you're probably right. > > 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"]. >> > > Or simply follow te["a"] <- NULL > > with > > te <- as.expression(te) > > This is a pretty fast operation if te is an expression or a list formed by > mistaken conversion from one. > > D But is this a reliable way to do it? I have been struggling some time ago with this type of conversion. Can not thing of an example now. But as far as I could remember, the conversion to list of an expression is not always reversible with as.expression. Am I wrong? > uncan Murdoch > > > 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