Skip to content

'modifyList' drops (not adds) NULL components

3 messages · Deepayan Sarkar, Raubertas, Richard

#
Dear list,

Utils::modifyList() drops NULL components in its second argument, instead of adding them to the first argument.  Compare:
$A
[1] 1

$B
[1] 2

$C
[1] 3
$A
[1] 1

$C
[1] 3

To me this seems inconsistent with the documentation ("Elements in 'val' which are missing from 'x' are added to 'x'."), and also with how I'd want the function to behave.
R version 3.0.1 Patched (2013-06-16 r62969)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     


Richard Raubertas
Merck & Co.


Notice:  This e-mail message, together with any attachme...{{dropped:11}}
#
On Thu, Jun 27, 2013 at 10:59 PM, Raubertas, Richard
<richard_raubertas at merck.com> wrote:
Agreed.
Note that you still get
NULL

So is there a specific reason you want the NULL elements to be
explicitly listed?

-Deepayan
#
See response inline below.
Yes, definitely.  Although 'foo$B' gives the same result, 'length(foo)' or 'names(foo)' do not.  Basically, the object 'foo', considered as a whole, is very different in the two cases, and this was a problem in the code I was writing.

Richard
Notice:  This e-mail message, together with any attachments, contains
information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station,
New Jersey, USA 08889), and/or its affiliates Direct contact information
for affiliates is available at 
http://www.merck.com/contact/contacts.html) that may be confidential,
proprietary copyrighted and/or legally privileged. It is intended solely
for the use of the individual or entity named on this message. If you are
not the intended recipient, and have received this message in error,
please notify us immediately by reply e-mail and then delete it from 
your system.