Thanks for all the suggestions!



Perhaps my post was not clear enough.

apply(array,1:2,sum)/dim(array)[3]

and 

# reproducible example
x <- 1:1000
dim(x)<-rep(10,3)
# code
apply(x,1:2,sum)


would give me the mean over one whole dimension, right? 
The problem with that is, that I just want to calculate the mean over a subset of t (where t is the 4th dimension of the array).
And the range of this subset should be easily changeable.


So for example I have 4D array:

x <- 1:10000
dim(x)<-rep(10,4)

Now I would like to average the 3D array(x,y,z) in the 4th dimension (t) from t_start = a to t_end = b.
I don't want to average the whole 3D array.



On 05.10.2011, at 22:21, William Dunlap wrote:

> Avoid parsing strings to make expressions.  It is easy
> to do, but hard to do safely and readably.
> 
> In your case you could make a short loop out of it
>   result <- x[,,,1]
>   for(i in seq_len(dim(x)[4])[-1]) {
>      result <- result + x[,,,i]
>   }
>   result <- result / dim(x)[4] 
> 
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com 


Wouldn't that be much slower than define a string and evaluate it as an expression since I would have to use a for-loop?




thanks again!
You helped me a lot today ;) 





On 05.10.2011, at 22:21, William Dunlap wrote:

> Avoid parsing strings to make expressions.  It is easy
> to do, but hard to do safely and readably.
> 
> In your case you could make a short loop out of it
>   result <- x[,,,1]
>   for(i in seq_len(dim(x)[4])[-1]) {
>      result <- result + x[,,,i]
>   }
>   result <- result / dim(x)[4] 
> 
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com 
> 
>> -----Original Message-----
>> From: r-help-bounces@r-project.org [mailto:r-help-bounces@r-project.org] On Behalf Of Martin Batholdy
>> Sent: Wednesday, October 05, 2011 1:14 PM
>> To: R Help
>> Subject: [R] do calculations as defined by a string / expand mathematical statements in R
>> 
>> Dear R-group,
>> 
>> 
>> is there a way to perform calculations that are defined in a string format?
>> 
>> 
>> for example I have different variables:
>> 
>> x1 <- 3
>> x2 <- 1
>> x4 <- 1
>> 
>> and a string-variable:
>> 
>> do <- 'x1 + x2 + x3'
>> 
>> 
>> Is there any way to perform what the variable 'do'-describes
>> (just like the formula-element but more elemental)?
>> 
>> 
>> 
>> Perhaps my idea to solve my problem is a little bit strange.
>> 
>> 
>> My general problem is, that I have to do arithmetics for which there seems to be no function available
>> that I can apply in order to be more flexible.
>> 
>> 
>> To be precise, I have to add up three dimensional arrays.
>> 
>> I can do that like this (as someone suggested on this help-list - thanks for that!):
>> 
>> (array[,,1] + array[,,2] + array[,,3]) / 3
>> 
>> 
>> However in my case it can happen that at some point, I don't have to add 3 but 8 'array-slices'
>> (or 10 or x).
>> 
>> And I don't want to manually expand the above statement to:
>> 
>> (array[,,1] + array[,,2] + array[,,3] + array[,,4] + array[,,5] + array[,,6] + array[,,7] +
>> array[,,8]) / 8
>> 
>> (ok, now I have done it ;)
>> 
>> 
>> 
>> So, my thinking was that I can easily expand and change a string (with the paste-function / repeat-
>> function etc.).
>> But how can I expand a mathematical statement?
>> 
>> 
>> thanks for any suggestions!
>> ______________________________________________
>> 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.


	[[alternative HTML version deleted]]

