[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.
Re: [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-boun...@r-project.org [mailto:r-help-boun...@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. __ 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.
Re: [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 batho...@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@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-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.
Re: [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 batho...@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@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-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.
Re: [R] do calculations as defined by a string / expand mathematical statements in R
Sorry!! meant: apply(array,1:2,sum)/dim(array)[3] M On Wed, Oct 5, 2011 at 4:31 PM, R. Michael Weylandt michael.weyla...@gmail.com wrote: Actually, this may just be a typo in your first post, but if you actually want to do this calculation: (array[,,1] + array[,,2] + array[,,3] + array[,,4] + array[,,5] + array[,,6] + array[,,7] + array[,,8]) / 8 Wouldn't this work? apply(array,3,sum)/dim(array)[3] On Wed, Oct 5, 2011 at 4:22 PM, R. Michael Weylandt michael.weyla...@gmail.com wrote: 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 batho...@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@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-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.
Re: [R] do calculations as defined by a string / expand mathematical statements in R
Actually, this may just be a typo in your first post, but if you actually want to do this calculation: (array[,,1] + array[,,2] + array[,,3] + array[,,4] + array[,,5] + array[,,6] + array[,,7] + array[,,8]) / 8 Wouldn't this work? apply(array,3,sum)/dim(array)[3] On Wed, Oct 5, 2011 at 4:22 PM, R. Michael Weylandt michael.weyla...@gmail.com wrote: 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 batho...@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@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-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.
Re: [R] do calculations as defined by a string / expand mathematical statements in R
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:1 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-boun...@r-project.org [mailto:r-help-boun...@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]] __ 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.
Re: [R] 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 batho...@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:1 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-boun...@r-project.org [mailto:r-help-boun...@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]] __ 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. __ 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.