[R] Calculation error

Ben Bolker bolker at ufl.edu
Mon May 3 02:16:28 CEST 2010


oscar linares <winsaam <at> gmail.com> writes:

> 
> Dear Rxperts,
> 
> Running the following code:
> =======================================================
> twlo=10; twhi=20; wt=154; vd=0.5; cl=0.046; tau=6; t=3; F=1;
> 
> wtkg  <- wt/2.2             # convert lbs to kg
> 
>   vd.pt <- wtkg * vd       # compute weight-based vd (L)
>   cl.pt <- wtkg * cl       # compute CL (L/hr)
>   k     <- cl.pt/vd.pt     # compute k (hr^-1)
> 
>   cave      <- round((twhi - twlo)/log(twhi/twlo),2)
>   doserate  <- (cl.pt * cave)/F
> 
>   # maintenance dose (Dm)
>   total_dose_tau <- round(doserate * tau,0)
> 
>   Cmax <- total_dose_tau/vd.pt
>   Cmin <- Cmax * exp(-k * tau)
> 
>   AR <- 1/(1 - exp(-k * tau))
> 
>   Cmaxss <- Cmax * AR
>   Cminss <- Cmin * AR
>   Cfluctss <- (Cmaxss - Cminss)
>   Ct       <- (Cmaxss * exp(-k * t))
> 
>   dose_loading_vd <- round(Cmaxss * vd.pt,0)
>   dose_loading_dm <- round(total_dose_tau * AR,0)
> 
>   options(digits=2)
> 
[snip]
> But, there is an error from R?
> 
> AR * total_dose_tau = 658 but that is wrong
> 
> Total Dose (mg) = 279 * AR (=2.4) = 670
> 
> Please help. I don't want to harm anyone. A difference of 12 mg of a highly
> toxic drug can at the very least cause significant harm.


  You set options(digits=2), thus AR is only printed to 2 digits
(2.4), when its true underlying value is  (at least to machine precision)

 options(digits=20)
> 1/(1-exp(-k*tau))
[1] 2.357362278468023

Note that options(digits=2) affects only the display of numeric values, not
their underlying values.  You have also done some rounding of intermediate
values, which is probably a bad idea.  Reading R FAQ 7.31 might be useful
as well.

 May I respectfully suggest that you not use a system that you don't
understand to compute the dosages of highly toxic drugs ?????

  Ben Bolker



More information about the R-help mailing list