Re: [Rd] Field initialization order bug?

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Tue, 17 Jul 2007 06:15:29 -0400

Daniel Wilhelm wrote:
> I believe that I may have found a bug in R. The top code sample gives
> an error as shown. However, by simply switching which field is
> initialized first as in the bottom code sample, it works as expected.
>
>
> This gives an error:
>
>
> a <- NULL
> a[["field1"]] <- 1
> a[["field2"]] <- matrix(c(2,1), 1)
>
> Error in a[["field2"]] <- matrix(c(2, 1), 1) :
> more elements supplied than there are to replace
>
>
>
> Yet, this works as expected:
>
> a <- NULL
> a[["field2"]] <- matrix(c(2,1), 1)

> a[["field1"]] <- 1
>
I'm surprised any of these work. I didn't expect to be able to index NULL, but the clue is there in the man page for "[[": "the left-hand-side is coerced as needed to accept the values."

What's happening is that in the first case, a becomes a numeric vector, and you can't assign a matrix to an element of a numeric vector. It won't fit.

In the second case, a becomes a list, and the assignments both succeed.

Duncan Murdoch



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 17 Jul 2007 - 10:26:18 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 17 Jul 2007 - 10:36:47 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.