Martin Batholdy
2011-Oct-05 20:14 UTC
[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!
William Dunlap
2011-Oct-05 20:21 UTC
[R] do calculations as defined by a string / expand mathematical statements in R
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.
R. Michael Weylandt
2011-Oct-05 20:22 UTC
[R] do calculations as defined by a string / expand mathematical statements in R
Didn't three of us give you a function (in various flavors) that would do the mean for variable inputs, reading them from a list? (Though David's was admittedly much cooler than mine!) Anyways, look into parse(text=do) with eval() if you want to go the string route. Michael On Wed, Oct 5, 2011 at 4:14 PM, Martin Batholdy <batholdy at googlemail.com> wrote:> 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. >
Jean-Christophe BOUËTTÉ
2011-Oct-05 20:28 UTC
[R] do calculations as defined by a string / expand mathematical statements in R
Hi, are you looking for # reproducible example x <- 1:1000 dim(x)<-rep(10,3) # code apply(x,1:2,sum) note that ?apply works with many functions... 2011/10/5 Martin Batholdy <batholdy at googlemail.com>:> 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. >
Maybe Matching Threads
- gsub - replace multiple occurences with different strings
- algorithm that iteratively drops columns of a data-frame
- mean of 3D arrays
- creating 3-way tables for mantelhaen.test
- select and do some calculations/manipulations on certain rows based on conditions in R