From r.hankin at noc.soton.ac.uk  Tue Nov 29 11:41:33 2005
From: r.hankin at noc.soton.ac.uk (Robin Hankin)
Date: Tue, 29 Nov 2005 10:41:33 +0000
Subject: [Rd] x[1,], x[1,,], x[1,,,], ...
In-Reply-To: <4384498B.1080401@maths.lth.se>
References: <4384498B.1080401@maths.lth.se>
Message-ID: <EFF39129-E649-4485-BB79-00EAE5805B46@soc.soton.ac.uk>

Hi everyone


apltake(x,1)

[where apltake() is part of library(magic)]

does this.

best wishes

Robin




On 23 Nov 2005, at 10:50, Henrik Bengtsson wrote:

> Hi,
>
> is there a function in R already doing what I try to do below:
>
> # Let 'x' be an array with *any* number of dimensions (>=1).
> x <- array(1:24, dim=c(2,2,3,2))
> ...
> x <- array(1:24, dim=c(4,3,2))
>
> i <- 2:3
>
> ndim <- length(dim(x))
> if (ndim == 1)
>    y <- x[i]
> else if (ndim == 2)
>    y <- x[i,]
> else if (ndim == 3)
>    y <- x[i,,]
> else ...
>
> and so on.  My current solution is
>
> ndim <- length(dim(x))
> args <- rep(",", ndim)
> args[1] <- "i"
> args <- paste(args, collapse="")
> code <- paste("x[", args, "]", sep="")
> expr <- parse(text=code)
> y <- eval(expr)
>
> ndim <- length(dim(x))
> args <- rep(",", ndim)
> args[1] <- "i"
> args <- paste(args, collapse="")
> code <- paste("x[", args, "]", sep="")
> expr <- parse(text=code)
> y <- eval(expr)
>
> Is there another way I can do this in R that I have overlooked?
>
> /Henrik
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
  tel  023-8059-7743



[Rd] x[1,], x[1,,], x[1,,,], ...
Robin Hankin