[Rd] Assigning a zero length vector to a list (PR#8157)
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Mon Sep 26 16:29:49 CEST 2005
Duncan Murdoch <murdoch at stats.uwo.ca> writes:
> After foo<-list(), foo$bar is NULL, so we can simplify this.
>
> Here's a simpler version:
>
> # These work, which is a bit of a surprise, but there is some
> inconsistency: one x becomes a list, the other is numeric:
> > x <- NULL
> > x[[1]] <- 1:10
> > x
> [[1]]
> [1] 1 2 3 4 5 6 7 8 9 10
>
> > x <- NULL
> > x[[1]] <- 1
> > x
> [1] 1
>
>
> # This generates the same bug as the above:
> > x <- NULL
> > x[[1]] <- numeric(0)
> > x
> [1] 4.250083e-314
>
> It looks like we're trying to be too clever with handling assignments to
> components of NULL. Wouldn't it make more sense for those to generate
> an error?
Once upon a time, we had pairlists, and NULL was the empty list. This
looks like it might be a relic. If so, it likely also predates
consistent handling of zero-length vectors, so something is getting
confused. I think it would be reasonable to expect similar results to
this:
> x<-list()
> x[[1]] <- numeric(0)
> x
[[1]]
numeric(0)
S-PLUS also tries to handle NULL as a zero length list, with some
anomalies:
> x <- NULL
> x[[1]] <- numeric(0)
> x
$value:
numeric(0)
> x <- list()
> x[[1]] <- numeric(0)
> x
[[1]]:
numeric(0)
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-devel
mailing list