[R] Subarrays
Huntsinger, Reid
reid_huntsinger at merck.com
Fri Apr 29 18:31:13 CEST 2005
You could write an R function to create an integer matrix whose rows are the
coordinates of the lattice points in the box with specified lower and upper
limits (code at end)
makeLattice <- function(lower,upper) {
# generate lattice points in box from from lower to upper
}
for example, then you can create the index matrix via
lower <- rep(1,length(dim(A)))
lower[v1] <- v2
upper <- dim(A)
upper[v1] <- v2
indx <- makeLattice(lower,upper)
and now A[indx] is the slice you want. You can dimension it as dim(A)[-v1].
Reid Huntsinger
Code:
makeLattice <- function(lower,upper) {
# generate lattice points in box from from lower to upper
n <- length(lower)
if (n != length(upper)) stop("vectors must have same length")
d <- upper - lower + 1
latticePts <- vector(length=n*prod(d), mode="integer")
dim(latticePts) <- c(prod(d), n)
# create each column
D <- c(1,cumprod(d[-n]))
for (j in 1:n) {
latticePts[,j] <- as.integer(rep(lower[j]:upper[j],rep(D[j],d[j])))
}
latticePts
}
-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Gunnar Hellmund
Sent: Friday, April 29, 2005 11:34 AM
To: r-help at stat.math.ethz.ch
Subject: [R] Subarrays
Define an array
> v<-1:256
> dim(v)<-rep(4,4)
Subarrays can be obtained as follows:
> v[3,2,,2]
[1] 71 87 103 119
> v[3,,,2]
[,1] [,2] [,3] [,4]
[1,] 67 83 99 115
[2,] 71 87 103 119
[3,] 75 91 107 123
[4,] 79 95 111 127
In the general case this procedure is very tedious.
Given an array
A, dim(A)=(dim_1,dim_2,...,dim_d)
and two vectors
v1=(n_i1,...n_ik), v2=(int_1,...,int_k) ('marginals' and relevant
'interval numbers')
is there a smart way to obtain
A[,...,int_1,....,int_2,....,....,int_k,....]
?
Best wishes
Gunnar Hellmund
______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
More information about the R-help
mailing list