From lawrence.michael at gene.com  Wed Oct 12 18:40:53 2016
From: lawrence.michael at gene.com (Michael Lawrence)
Date: Wed, 12 Oct 2016 09:40:53 -0700
Subject: [Rd] How to assign NULL value to pairlist element while keeping
 it a pairlist?
In-Reply-To: <CAFDcVCQEA8Q7Zec6m3mF4PY4mL=VJOihGtXRbKiPq98hKMfY2A@mail.gmail.com>
References: <CAFDcVCQEA8Q7Zec6m3mF4PY4mL=VJOihGtXRbKiPq98hKMfY2A@mail.gmail.com>
Message-ID: <CAOQ5NyeBDy-jAC2-u4TB_CbFtjS4z11dzVuV5_ZmhU11BCwETg@mail.gmail.com>

The coercion is probably the most viable workaround for now, as it's
consistent with what happens internally for calls. All pairlists/calls
are converted to list for subassignment, but only calls are converted
back. My guess is that the intent was for users to move from using a
pairlist to the "new" (almost 20 years ago) list. In my opinion,
consistency trumps "convenience" in this case. If others agree, I'll
change it to also coerce back to pairlist.

Michael

On Wed, Oct 12, 2016 at 9:20 AM, Henrik Bengtsson
<henrik.bengtsson at gmail.com> wrote:
> Hi, I seem to not be able to assign NULL to an element of a pairlist
> without causing it to be coerced to a plain list.  For example:
>
>> x <- pairlist(1, 2)
>> class(x)
> [1] "pairlist"
>
>> x[1] <- list(NULL)
>> class(x)
> [1] "list"
>
> This actually true for all [()<- assignments regardless of list value, e.g.
>
>> x <- pairlist(1, 2)
>> x[1] <- list(0)
> [1] "list"
>
> I also tried assigning a pairlist(), but still the same problem:
>
>> x <- pairlist(1, 2)
>> x[1] <- pairlist(0)
> [1] "list"
>
> The only workaround I'm aware of is to:
>
> x <- as.pairlist(x)
>
> at the end.  Any other suggestions?
>
> Thanks,
>
> Henrik
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] How to assign NULL value to pairlist element while keeping it a pairlist?
Michael Lawrence