This seems to be due to changes made by Martin Maechler in 2008. Presumably 
this fixed something, but it escapes my memory.

However, it seems to have broken the equivalence between within.list and 
within.data.frame, so now

within.list <- within.data.frame

does not suffice.

The crux of the matter seems to be that both the following constructions work 
for data frames

> aq <- head(airquality)
> names(aq)
[1] "Ozone"   "Solar.R" "Wind"    "Temp"    "Month"   "Day"    
> aq[c("Wind","Temp")] <- NULL
> aq
  Ozone Solar.R Month Day
1    41     190     5   1
2    36     118     5   2
3    12     149     5   3
4    18     313     5   4
5    NA      NA     5   5
6    28      NA     5   6
> aq <- head(airquality)
> aq[c("Wind","Temp")] <- vector("list",2)
> aq
  Ozone Solar.R Month Day
1    41     190     5   1
2    36     118     5   2
3    12     149     5   3
4    18     313     5   4
5    NA      NA     5   5
6    28      NA     5   6

However, for lists they differ:

> aq <- as.list(head(airquality))
> aq[c("Wind","Temp")] <- vector("list",2)
> aq
$Ozone
[1] 41 36 12 18 NA 28

$Solar.R
[1] 190 118 149 313  NA  NA

$Wind
NULL

$Temp
NULL

$Month
[1] 5 5 5 5 5 5

$Day
[1] 1 2 3 4 5 6

> aq <- as.list(head(airquality))
> aq[c("Wind","Temp")] <- NULL
> aq
$Ozone
[1] 41 36 12 18 NA 28

$Solar.R
[1] 190 118 149 313  NA  NA

$Month
[1] 5 5 5 5 5 5

$Day
[1] 1 2 3 4 5 6


-pd

> On 26 Jun 2017, at 04:40 , Hong Ooi via R-devel <r-devel@r-project.org> wrote:
> 
> The behaviour of within() with list input changes if you delete 2 or more 
> variables, compared to deleting one:
> 
> l <- list(x=1, y=2, z=3)
> 
> within(l,
> {
>    rm(z)
> })
> #$x
> #[1] 1
> #
> #$y
> #[1] 2
> 
> 
> within(l, {
>    rm(y)
>    rm(z)
> })
> #$x
> #[1] 1
> #
> #$y
> #NULL
> #
> #$z
> #NULL
> 
> 
> When 2 or more variables are deleted, the list entries are instead set to 
> NULL. Is this intended?
> 
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd....@cbs.dk  Priv: pda...@gmail.com

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to