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

Reply via email to