|
View:
New views
5 Messages
—
Rating Filter:
Alert me
|
|
|
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@... http://www4.unifi.it/dssnp/ ______________________________________________ R-help@... 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: Is there in R a function equivalent to the mround, as found in most spreadsheets?Dr. Ottorino-Luca Pantani <ottorino-luca.pantani <at> unifi.it> writes:
> > 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. A first guess would be a = c(1803.02, 193.51, 3.47) round(a / 5)*5 which gives 1805 195 5 This is not exactly what you want, but it shows that the problem is a bit ill-defined. In the example you gave, why do you want 1800, and not 1805, which is possible with the pipettes? I assume that you laboratory experience is working in the background, telling you to stop pipetmanning when you are close to the result in some "percentage" feeling. Dieter ______________________________________________ R-help@... 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: Is there in R a function equivalent to the mround, as found in most spreadsheets?On May 9, 2008, at 5:39 AM, Dieter Menne wrote:
> Dr. Ottorino-Luca Pantani <ottorino-luca.pantani <at> unifi.it> > writes: >> >> 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. > > A first guess would be > > a = c(1803.02, 193.51, 3.47) > round(a / 5)*5 > > which gives > > 1805 195 5 If I understand the OP's question properly, the first value is to be a multiple of 50, the second a multiple of 5, and the third a multiple of 1. This can be done with this slight variation on the above theme: a <- c(1803.02, 193.51, 3.47) b <- c(50,5,1) round(a/b) *b > This is not exactly what you want, but it shows that the problem is > a bit > ill-defined. In the example you gave, why do you want 1800, and not > 1805, which > is possible with the pipettes? I assume that you laboratory > experience is > working in the background, telling you to stop pipetmanning when > you are close > to the result in some "percentage" feeling. > > Dieter Haris Skiadas Department of Mathematics and Computer Science Hanover College ______________________________________________ R-help@... 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: Is there in R a function equivalent to the mround, as found in most spreadsheets?Charilaos Skiadas ha scritto:
> On May 9, 2008, at 5:39 AM, Dieter Menne wrote: > > If I understand the OP's question properly, the first value is to be a > multiple of 50, the second a multiple of 5, and the third a multiple > of 1. This can be done with this slight variation on the above theme: > > a <- c(1803.02, 193.51, 3.47) > b <- c(50,5,1) > round(a/b) *b This is exactly was I was looking for, and you understand it properly. Sorry for the double post, but I'm experiencing problems with my account in this list > >> This is not exactly what you want, but it shows that the problem is a >> bit >> ill-defined. In the example you gave, why do you want 1800, and not >> 1805, which >> is possible with the pipettes? I assume that you laboratory >> experience is >> working in the background, telling you to stop pipetmanning when you >> are close >> to the result in some "percentage" feeling. >> >> Dieter transferring some experience with spreadsheets to R. I want (actually "the pipette wants") 1800 instead that 1805 since the larger volumes are to be delivered with a digital pipette whose step is 50. Thanks to all the people who contributed. This list is always a great source. 8rino ______________________________________________ R-help@... 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: Is there in R a function equivalent to the mround, as found in most spreadsheets?Hello Luca.
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 |
| Free Forum Powered by Nabble | Forum Help |