| sprintf {base} | R Documentation |
Use C-style String Formatting Commands
Description
A wrapper for the C function sprintf, that
returns a character vector of length one containing a formatted
combination of text and variable values.
Usage
sprintf(fmt, ...)
Arguments
fmt |
a format string |
... |
values to be passed into |
Details
The following is abstracted from K&R (see References, below). The
string fmt contains normal characters, which are passed through
to the output string, and also special characters that operate on the
arguments provided through .... Special characters start
with a % and terminate with one of the letters in the set
difeEgGs%. These letters denote the following types:
d,iInteger value
fDouble precision value, in decimal notation of the form "[-]mmm.ddd". The number of decimal places is specified by the precision: the default is 6; a precision of 0 suppresses the decimal point.
e,EDouble precision value, in decimal notation of the form
[-]m.ddde[+-]xxor[-]m.dddE[+-]xxg,GDouble precision value, in
%eor%Eformat if the exponent is less than -4 or greater than or equal to the precision, and%fformat otherwisesCharacter string
%Literal
%(none of the formatting characters given below are permitted in this case)
In addition, between the initial % and the terminating
conversion character there may be, in any order:
m.nTwo numbers separated by a period, denoting the field width (
m) and the precision (n)-Left adjustment of converted argument in its field
+Always print number with sign
- a space
Prefix a space if the first number is not a sign
0For numbers, pad to the field width with leading zeros
Note that the arguments are simply passed through to sprintf,
and so any formatting errors, e.g. passing a float to the conversion
character i, are replicated in the resulting string. See the
examples for an illustration.
Value
A character vector of length one.
Author(s)
Jonathan Rougier, J.C.Rougier@durham.ac.uk
References
Kernighan, B. W. and Ritchie, D. M. (1988) The C Programming Language. Second edition, Prentice Hall. describes the format options in table B-1 in the Appendix.
See Also
formatC for a way of formatting vectors of
numbers in a similar fashion, paste for another way of
creating a vector combining text and values.
Examples
## be careful with the format: most things in R are floats
sprintf("%s is %f feet tall\n", "Sven", 7) # OK
sprintf("%s is %i feet tall\n", "Sven", 7) # not OK
sprintf("%s is %i feet tall\n", "Sven", as.integer(7)) # OK again
## use a literal % :
sprintf("%.0f%% said yes (out of a sample of size %.0f)", 66.666, 3)
## various formats of pi :
sprintf("%f", pi)
sprintf("%.3f", pi)
sprintf("%1.0f", pi)
sprintf("%5.1f", pi)
sprintf("%05.1f", pi)
sprintf("%+f", pi)
sprintf("% f", pi)
sprintf("%-10f", pi)# left justified
sprintf("%e", pi)
sprintf("%E", pi)
sprintf("%g", pi)
sprintf("%g", 1e6 * pi) # -> exponential
sprintf("%.9g", 1e6 * pi) # -> "fixed"
sprintf("%G", 1e-6 * pi)
## no truncation:
sprintf("%1.f",101)
## More sophisticated:
lapply(c("a", "ABC", "and an even longer one"),
function(ch) sprintf("10-string `%10s'", ch))
sapply(1:18, function(n)
sprintf(paste("e with %2d digits = %.",n,"g",sep=""),
n, exp(1)))