From ehlers at ucalgary.ca  Thu Sep  2 07:22:08 2010
From: ehlers at ucalgary.ca (Peter Ehlers)
Date: Wed, 01 Sep 2010 23:22:08 -0600
Subject: [Rd] Looks like a bug in subsetting of a complicated object
In-Reply-To: <AANLkTikbbiHFZB9fxHCXfHrnJP_iEYSWX58gOXBEi9LK@mail.gmail.com>
References: <AANLkTikbbiHFZB9fxHCXfHrnJP_iEYSWX58gOXBEi9LK@mail.gmail.com>
Message-ID: <4C7F3480.2010809@ucalgary.ca>

On 2010-09-01 16:22, Kjetil Halvorsen wrote:
> I don't understand what is happening! I have a (large) object sim1, an
> matrix list
> with dim c(101,101) where each element is an 3*3 matrix. I am
> subsetting that with
> a matrix coo, of dim c(100,2), of unique indices, but the resulting object
> has length 99, not 100 as expected.
>
> Code reproducing the problem follows:
>
>
> library(RandomFields)
>
> set.seed(123)
> sim0<- GaussRF(x=seq(0, 100, by=1),
>                  y=seq(0, 100, by=1),
>                  grid=TRUE, model="spherical",
>                  param=c(0, 1, 0, 10), trend=NULL, n=9, gridtriple=FALSE)
>
> simmatrices<- function(arr) # arr must be an array of rank 3
>                          {
>                 d<- dim(arr)
>                 n1<- d[1]; n2<- d[2] # we suppose d[3]==9
>                 res<- vector(length=n1*n2, mode="list")
>                 dim(res)<- c(n1, n2)
>                 for (i in 1:n1) for (j in 1:n2) {
>                   x1<- arr[i, j, 1:3];x2<- arr[i, j, 4:6]
>                   x3<- arr[i, j, 7:9]
>                   res[[i, j]]<- x1%o%x1 + x2%o%x2 + x3%o%x3
>                 }
>                 res
>               }
>
> sim1<- simmatrices(sim0)
>
> set.seed(234)
> x<- sample(seq(0, 100, by=1), 101, replace=TRUE)
> y<- sample(seq(0, 100, by=1), 101, replace=TRUE)
> coo<- cbind(x=x, y=y)
> coo<- unique(coo)
>
> sim1.obs<- sim1[coo]
>
> dim(coo)
> length(sim1.obs)

One of the values in coo is zero.

   -Peter Ehlers

>
>
>> sessionInfo()
> R version 2.11.1 (2010-05-31)
> i686-pc-linux-gnu
>
> locale:
>   [1] LC_CTYPE=en_US.utf8       LC_NUMERIC=C
>   [3] LC_TIME=en_US.utf8        LC_COLLATE=en_US.utf8
>   [5] LC_MONETARY=C             LC_MESSAGES=en_US.utf8
>   [7] LC_PAPER=en_US.utf8       LC_NAME=C
>   [9] LC_ADDRESS=C              LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> other attached packages:
> [1] lattice_0.18-8      gstat_0.9-69        sp_0.9-66
> [4] RandomFields_1.3.41
>
> loaded via a namespace (and not attached):
> [1] fortunes_1.3-7 grid_2.11.1    tools_2.11.1
>>
>
> Kjetil
>



[Rd] Looks like a bug in subsetting of a complicated object
Peter Ehlers