Try this: x <- array(1:1000, rep(10, 3)) vList <- list(i = 4:6, j = 4:6, ... = 4:6) do.call('[', c(list(x), vList))
On Fri, Oct 9, 2009 at 7:18 AM, Mark McDowall <markmcdowa...@googlemail.com> wrote: > I want to select a subset of an array, but I want to make a function so that > it can handle any number of dimensions. > > This is probably best described with an example > >> x <- 1:100 >> dim(x) <- c(10,10) >> x > [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] > [1,] 1 11 21 31 41 51 61 71 81 91 > [2,] 2 12 22 32 42 52 62 72 82 92 > [3,] 3 13 23 33 43 53 63 73 83 93 > [4,] 4 14 24 34 44 54 64 74 84 94 > [5,] 5 15 25 35 45 55 65 75 85 95 > [6,] 6 16 26 36 46 56 66 76 86 96 > [7,] 7 17 27 37 47 57 67 77 87 97 > [8,] 8 18 28 38 48 58 68 78 88 98 > [9,] 9 19 29 39 49 59 69 79 89 99 > [10,] 10 20 30 40 50 60 70 80 90 100 >> >> vList <- vector("list", 2) >> vList[[1]] <- c(4:6) >> vList[[2]] <- c(4:6) >> x[vList[[1]],vList[[2]]] > [,1] [,2] [,3] > [1,] 34 44 54 > [2,] 35 45 55 > [3,] 36 46 56 > > but if: > >> x <- 1:1000 >> dim(x) <- c(10,10,10) > > I would would have to increase the returning call: > x[vList[[1]],vList[[2]],vList[[3]]] > > What I would like to be able to do is pass x the list of lists and have it > return the required points. > > Anyone have any clues on how to get over this hurdle? > > Thank you > > Mark > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O ______________________________________________ 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.