Kjetil Halvorsen
2010-Sep-01 22:22 UTC
[Rd] Looks like a bug in subsetting of a complicated object
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)> 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
Peter Ehlers
2010-Sep-02 05:22 UTC
[Rd] Looks like a bug in subsetting of a complicated object
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 >
Reasonably Related Threads
- usb port issue in 9.1-Prerelease (Possibly Cam related)
- "simulate" does not include variability in parameter estimation
- "simulate" does not include variability in parameter estimation
- Questions on weighted least squares
- help ith burncd (Input/output error, 6.1-RC, plextor PX-740a)