Duncan Murdoch <[EMAIL PROTECTED]> 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 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel