[R] strange sprintf() behaviour ?

Henrik Bengtsson hb at maths.lth.se
Sat Nov 1 11:05:58 CET 2003


Hi, sprintf() returns a character string ('s' for string). See ?sprintf.
It does not print (to standard output as you think). If you call it at
the R prompt you'll get a string, which is then printed. Thus, to print
it you should call cat(sprintf(...)) or print(sprintf(...)).  

About you previous question about %d and %f etc; If x is a double, %d
can be used with as.integer(x) and %.0f with x to output as an integer.

/Henrik

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch 
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of 
> ryszard.czerminski at pharma.novartis.com
> Sent: den 31 oktober 2003 20:39
> To: rossini at u.washington.edu
> Cc: R help list; Bill Shipley; r-help-bounces at stat.math.ethz.ch
> Subject: [R] strange sprintf() behaviour ?
> 
> 
> This is quite strange behaviour - at least for R-novice as myself....
> 
> Consider this:
> 
> > testf <- function() { x <-2; sprintf("%s %f", "x =", x); 
> return(x) } 
> > result <- testf() testf <- function() { x <-2; sprintf("%s 
> %f", "x =", 
> > x) } result <- testf()
> > testf()
> [1] "x = 2.000000"
> 
> Apparently  adding return() statement and invoking function like this 
> "result <- testf()"
> suppresses output from sprintf()
> 
> Output from print() is NOT suppressed:
> 
> > testf <- function() { x <-2; print(c("x =", x)) }
> > result <- testf()
> [1] "x =" "2"
> > testf <- function() { x <-2; print(c("x =", x)); return(x) 
> } result <- 
> > testf()
> [1] "x =" "2"
> 
> Is there a way to use sprintf() inside a function ?
> 
> I guess I can say: print(sprintf()) - is it the only solution 
> for this ?
> 
> R
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list 
> https://www.stat.math.ethz.ch/mailma> n/listinfo/r-help
> 
>




More information about the R-help mailing list