hello everyone. Look at the following R idiom:
a <- array(1:30,c(3,5,2)) M <- (matrix(1:15,c(3,5)) %% 4) < 2 a[M,] <- 0 Now, I think that "a[M,]" has an unambiguous meaning (to a human). However, the last line doesn't work as desired, but I expected it to...and it recently took me an indecent amount of time to debug an analogous case. Just to be explicit, I would expect a[M,] to extract a[i,j,] where M[i,j] is TRUE. (Extract.Rd is perfectly clear here, and R is behaving as documented). The best I could cobble together was the following: ind <- which(M,arr.ind=TRUE) n <- 3 ind <- cbind(kronecker(ind,rep(1,dim(a)[n])),rep(seq_len(dim(a)[n]),nrow(ind))) a[ind] <- 0 but the intent is hardly clear, certainly compared to "a[M,]" I've been pondering how to implement such indexing, and its generalization. Suppose 'a' is a seven-dimensional array, and M1 a matrix and M2 a three-dimensional array (both Boolean). Then "a[,M1,,M2]" is a natural generalization of the above. I would want a[,M1,,M2] to extract a[i1,i2,i3,i4,i5,i6,i7] where M1[i2,i3] and M[i5,i6,i7] are TRUE. One would need all(dim(a)[2:3] == dim(M1)) and all(dim(a)[5:7] == dim(M2)) for consistency. Can any R-devel subscribers advise? -- Robin Hankin Uncertainty Analyst hankin.ro...@gmail.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel