do calculations as defined by a string / expand mathematical statements in R
# Changing to variable Z since array() is a function apply(Z.temp <- Z[,,,a:b],1:3,sum)/dim(Z.temp)[4] # Should work, though it may be more clear to define Z.temp in its own line M
On Wed, Oct 5, 2011 at 5:10 PM, Martin Batholdy <batholdy at googlemail.com> wrote:
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 at r-project.org [mailto:r-help-bounces at 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 at 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]]
______________________________________________ R-help at 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.