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. >
Reasonably Related 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