# Re: [R] Subsetting an array by a vector of dimensions

Date: Fri, 11 Jul 2008 17:30:03 +0100

> subsetArray <- function(x, subset) {

```+   subsetString <- paste(subset, collapse=",")
+   subsetString <- gsub("NA","",subsetString)
+   evalString <- paste(expression(x), "[", subsetString, "]")
+   eval(parse(text=evalString))
+ }
```

> x <- array(1:24, dim=2:4)
> subsetArray(x, c(1,1,2))

[1] 7
> subsetArray(x, c(1,NA,2))

[1] 7 9 11
> subsetArray(x, c(1,NA,NA))
```[1,]    1    7   13   19
[2,]    3    9   15   21
[3,]    5   11   17   23
```

>
> subsetArray(x, c(1,1,2)) <- 25

Error in subsetArray(x, c(1, 1, 2)) <- 25 :   could not find function "subsetArray<-"

Best wishes

Richard.

Patrick Burns wrote:
> I think you are looking for subscripting with a
> matrix:
>
> x[cbind(1,1,2)]
>
> See, for instance, the subscripting section of chapter 1
> of S Poetry.
>
>
> Patrick Burns
> patrick_at_burns-stat.com
> +44 (0)20 8525 0696
> http://www.burns-stat.com
> (home of S Poetry and "A Guide for the Unwilling S User")
>
> Richard Pearson wrote:

```>> Hi
>>
>> Is it possible to subset an n-dimensional array by a vector of n
>> dimensions? E.g. assume I have
>>
>>> x <- array(1:24, dim=2:4)
>>> x[1,1,2]
>> [1] 7
>>> dims <- c(1,1,2)
>>
>> I would like a function that I can supply x and dims as parameters to,
>> and have it return 7. Also, I would like to do something like:
>>
>>> x[1,1,]
>> [1]  1  7 13 19
>>> dims2<- c(1,1,NA)
>>
>> And have a function of x and dims2 that gives me back [1]  1  7 13 19
>>
>> Does such a thing exist?
>>
>> Thanks
>>
>> Richard
>>
>>
```

>
```--
School of Computer Science,    http://www.cs.man.ac.uk/~pearsonr
University of Manchester,      Tel: +44 161 275 6178
Oxford Road,                   Mob: +44 7971 221181
Manchester M13 9PL, UK.        Fax: +44 161 275 6204

______________________________________________
R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help