Dr. Ottorino-Luca Pantani
2008-May-06 16:07 UTC
[R] Is there in R a function equivalent to the mround, as found in most spreadsheets?
Dear R-users, I have the following problem In a lab experiment I have to mix three solutions to get different concentrations of various molecules in a cuvette I've used R to calculate the necessary ?liters for each of the level of the experiment and I must confess that it is more useful and easier to achieve the results than using spreadsheets. But there's a problem. Imagine that for a particular cuvette (I have 112 different cuvettes !!) you have to mix the following volumes of solution A, B, and C respectively. c(1803.02, 193.51, 3.47) Each solution is to be taken with 3 different pipettes (5000, 250 and 10 ?L Volume max) and each of those delivers volumes in steps of 50 ?L, 5 ?L or 1?L, respectively Since the above values would eventually become c(1800, 195, 3) it is then necessary to recalculate all the final concentrations of A, B and C, because the volumes are changed. I know that in most spreadsheets (Calc in Open Office, Gnumeric, Excel and so on) there's a function such as mround(num; num) that give the results I need, but I want to learn more on R functions. I played a little with R functions such as round, signif, ceiling, trunc, and floor but without success. Any hint to solve this problem ? Thanks a lot http://www.openofficetips.com/blog/archives/2005/04/rounding_to_the.html http://www.gnome.org/projects/gnumeric/doc/gnumeric-MROUND.shtml -- Ottorino-Luca Pantani, Universit? di Firenze Dip. Scienza del Suolo e Nutrizione della Pianta P.zle Cascine 28 50144 Firenze Italia Tel 39 055 3288 202 (348 lab) Fax 39 055 333 273 OLPantani at unifi.it http://www4.unifi.it/dssnp/
Duncan Murdoch
2008-May-06 16:43 UTC
[R] Is there in R a function equivalent to the mround, as found in most spreadsheets?
On 5/6/2008 12:07 PM, Dr. Ottorino-Luca Pantani wrote:> Dear R-users, > I have the following problem > > In a lab experiment I have to mix three solutions to get different > concentrations of various molecules in a cuvette > > I've used R to calculate the necessary ?liters for each of the level of > the experiment and I must confess that it is more useful and easier to > achieve the results than using spreadsheets. > > But there's a problem. > > Imagine that for a particular cuvette (I have 112 different cuvettes !!) > you have to mix the following volumes of solution A, B, and C respectively. > > c(1803.02, 193.51, 3.47) > > Each solution is to be taken with 3 different pipettes (5000, 250 and 10 > ?L Volume max) and each of those delivers volumes in steps of 50 ?L, 5 > ?L or 1?L, respectively > Since the above values would eventually become > > c(1800, 195, 3) > > it is then necessary to recalculate all the final concentrations > of A, B and C, because the volumes are changed. > > > I know that in most spreadsheets (Calc in Open Office, Gnumeric, Excel > and so on) > there's a function such as > > mround(num; num) > > that give the results I need, but I want to learn more on R functions. > > > I played a little with R functions such as > > round, signif, ceiling, trunc, and floor > > but without success. > Any hint to solve this problem ?I believe this function matches the description in OOO: mround <- function(number, multiple) multiple * round(number/multiple) Duncan Murdoch
Yasir Kaheil
2008-May-06 16:47 UTC
[R] Is there in R a function equivalent to the mround, as found in most spreadsheets?
Hi Ottorino, You could just use the modulus operator "%%" as follows:> x<-c(1803.02, 193.51, 3.47); > x-x%%c(50,5,1) #just using the modulus operator[1] 1800 190 3 thanks Dr. Ottorino-Luca Pantani wrote:> > Dear R-users, > I have the following problem > > In a lab experiment I have to mix three solutions to get different > concentrations of various molecules in a cuvette > > I've used R to calculate the necessary ?liters for each of the level of > the experiment and I must confess that it is more useful and easier to > achieve the results than using spreadsheets. > > But there's a problem. > > Imagine that for a particular cuvette (I have 112 different cuvettes !!) > you have to mix the following volumes of solution A, B, and C > respectively. > > c(1803.02, 193.51, 3.47) > > Each solution is to be taken with 3 different pipettes (5000, 250 and 10 > ?L Volume max) and each of those delivers volumes in steps of 50 ?L, 5 > ?L or 1?L, respectively > Since the above values would eventually become > > c(1800, 195, 3) > > it is then necessary to recalculate all the final concentrations > of A, B and C, because the volumes are changed. > > > I know that in most spreadsheets (Calc in Open Office, Gnumeric, Excel > and so on) > there's a function such as > > mround(num; num) > > that give the results I need, but I want to learn more on R functions. > > > I played a little with R functions such as > > round, signif, ceiling, trunc, and floor > > but without success. > Any hint to solve this problem ? > > Thanks a lot > > http://www.openofficetips.com/blog/archives/2005/04/rounding_to_the.html > http://www.gnome.org/projects/gnumeric/doc/gnumeric-MROUND.shtml > > -- > Ottorino-Luca Pantani, Universit? di Firenze > Dip. Scienza del Suolo e Nutrizione della Pianta > P.zle Cascine 28 50144 Firenze Italia > Tel 39 055 3288 202 (348 lab) Fax 39 055 333 273 > OLPantani at unifi.it http://www4.unifi.it/dssnp/ > > ______________________________________________ > 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. > >----- Yasir H. Kaheil, Ph.D. Catchment Research Facility The University of Western Ontario -- View this message in context: http://www.nabble.com/Is-there-in-R-a-function-equivalent-to-the-mround%2C-as-found-in-most-spreadsheets--tp17086856p17087399.html Sent from the R help mailing list archive at Nabble.com.
Dr. Ottorino-Luca Pantani
2008-May-09 07:14 UTC
[R] Is there in R a function equivalent to the mround, as found in most spreadsheets?
Dear R-users, I have the following problem In a lab experiment I have to mix three solutions to get different concentrations of various molecules in a cuvette I've used R to calculate the necessary ?liters for each of the level of the experiment and I must confess that it is more useful and easier to achieve the results than using spreadsheets. But there's a problem. Imagine that for a particular cuvette (I have 112 different cuvettes !!) you have to mix the following volumes of solution A, B, and C respectively. c(1803.02, 193.51, 3.47) Each solution is to be taken with 3 different pipettes (5000, 250 and 10 ?L Volume max) and each of those delivers volumes in steps of 50 ?L, 5 ?L or 1?L, respectively Since the above values would eventually become c(1800, 195, 3) it is then necessary to recalculate all the final concentrations of A, B and C, because the volumes are changed. I know that in most spreadsheets (Calc, Gnumeric, Excel and so on) there's a function such as mround(num; num) that give the results I need, but I want to learn more on R functions. I played a little with R functions such as round, signif, ceiling, trunc, and floor but without success. Any hint to solve this problem ? Thanks a lot http://www.openofficetips.com/blog/archives/2005/04/rounding_to_the.html http://www.gnome.org/projects/gnumeric/doc/gnumeric-MROUND.shtml -- Ottorino-Luca Pantani, Universit? di Firenze Dip. Scienza del Suolo e Nutrizione della Pianta P.zle Cascine 28 50144 Firenze Italia Tel 39 055 3288 202 (348 lab) Fax 39 055 333 273 OLPantani at unifi.it http://www4.unifi.it/dssnp/
Alberto Santini
2008-May-11 09:42 UTC
[R] Is there in R a function equivalent to the mround, as found in most spreadsheets?
Hello Luca. Dr. Ottorino-Luca Pantani wrote:> > ... > > c(1803.02, 193.51, 3.47) > > Each solution is to be taken with 3 different pipettes (5000, 250 and 10 > ?L Volume max) and each of those delivers volumes in steps of 50 ?L, 5 > ?L or 1?L, respectively > Since the above values would eventually become > > c(1800, 195, 3) > > ... >You find a complete solution at http://albertosantini.blogspot.com/2008/05/mround.html It checks the sign of the number and the multiple and it hacks the issue of rounding off a 5 respect IEC 60559 standard. The test cases are: mround(10, 3) # 9 mround(-10, -3) # -9 mround(1.3, 0.2) # 1.4 mround(5, -2) # error mround(1.7, 0.2) # 1.8 mround(321.123, 0.12) # 321.12 mround(1803.02, 50) # 1800 mround(193.51, 5) # 195 mround(3.47, 1) # 3 Regards, Alberto -- View this message in context: http://www.nabble.com/Is-there-in-R-a-function-equivalent-to-the-mround%2C-as-found-in-most-spreadsheets--tp17143519p17170296.html Sent from the R help mailing list archive at Nabble.com.