Laura Bonnett wrote:
crosstable[,,expand[d,1],expand[d,2],expand[d,3],...expand[d,n]]
crosstable is just a crosstabulation of an n+2-dimensional dataset and I am trying to pick out those that are in combination 'd' of expand. So for example, for 5-dimensional data using your example: Var1 Var2 Var3
1     1    1    1
2     2    1    1
3     3    1    1
4     1    2    1
5     2    2    1
6     3    2    1
7     1    1    2
8     2    1    2
9     3    1    2
10    1    2    2
11    2    2    2
12    3    2    2
d refers to the row of the matrix above - d=2 is 2,1,1 so crosstable[,,2,1,1] would retrieve all the data where Var1 =2, Var2=1, Var3=1 and the two remaining variables are given in the crosstabulations for all values. Is that any better?


OK I think I understand. The magic package uses this type of construction extensively, but not this particular one.

It's trickier than I'd have expected.

Try this:

f <- function(a,v){
jj <- sapply(dim(a)[seq_len(length(dim(a))-length(v))],seq_len,simplify=FALSE)
   jj <- c(jj , as.list(v))
   do.call("[" , c(list(a) , jj, drop=TRUE))
}



[you will have to coerce the output from expand.grid() to a matrix in order to extract a row from it]


HTH

rksh







--
Robin K. S. Hankin
Senior Research Associate
Cambridge Centre for Climate Change Mitigation Research (4CMR)
Department of Land Economy
University of Cambridge
[EMAIL PROTECTED]
01223-764877

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to