[R] Decimal places in a function output

Marc Schwartz marc_schwartz at me.com
Wed Nov 10 17:02:05 CET 2010


On Nov 10, 2010, at 9:51 AM, Liliana Pacheco wrote:

> Hi R users
> I have a very simple function. As the return of that function I want the
> answer with 5 decimal places, but it hasn't worked with sprintf, nor with
> format, nor print. This is how I used sprintf:
> 
> cuant<-function(r,n){
> d<-seq(-1,1,by=0.001)
> .
> .
> .
> (SOME CALCULATIONS)
> .
> .
> .
> return(sprintf("%.5f",d[i-1]))
> }
> 
> d is a vector with the numbers I need, specially the last one.
> 
> how can I get the resulting number of the function with a certain amount of
> decimal places?
> 
> Thanks.
> 
> Liliana Pacheco


Presuming tat you want to be able to pass an argument that defines the number of decimal places:

myfunc <- function(x, nsmall) {sprintf("%.*f", nsmall, x)}

> myfunc(3.123456, 3)
[1] "3.123"

> myfunc(3.123456, 5)
[1] "3.12346"

> myfunc(3.123456, 2)
[1] "3.12"


The argument 'nsmall' is passed to sprintf() and replaces the '*' formatting parameter.

See  the description towards the end of the Details in ?sprintf

HTH,

Marc Schwartz



More information about the R-help mailing list