formatC
位于 base
包(package)。 说明
formatC()
使用 C
样式格式规范单独灵活地格式化数字。
prettyNum()
用于 “prettifying” (可能已格式化)数字,也在 format.default
中。
.format.zeros(x)
是 prettyNum()
的辅助函数,它重新格式化格式化数字向量 x
中的零。
用法
formatC(x, digits = NULL, width = NULL,
format = NULL, flag = "", mode = NULL,
big.mark = "", big.interval = 3L,
small.mark = "", small.interval = 5L,
decimal.mark = getOption("OutDec"),
preserve.width = "individual",
zero.print = NULL, replace.zero = TRUE,
drop0trailing = FALSE)
prettyNum(x, big.mark = "", big.interval = 3L,
small.mark = "", small.interval = 5L,
decimal.mark = getOption("OutDec"), input.d.mark = decimal.mark,
preserve.width = c("common", "individual", "none"),
zero.print = NULL, replace.zero = FALSE,
drop0trailing = FALSE, is.cmplx = NA,
...)
.format.zeros(x, zero.print, nx = suppressWarnings(as.numeric(x)),
replace = FALSE, warn.non.fitting = TRUE)
参数
x |
原子数字或字符对象,可能仅适用于 |
digits |
小数点后所需的位数 ( 默认值:2 表示整数,4 表示实数。如果小于 0,则使用 C 默认的 6 位数字。如果指定超过 50,则使用 50 时会出现警告,除非 |
width |
总字段宽度;如果 |
format |
等于
|
flag |
对于
这些标志可以有多个,顺序任意。其他字符过去没有效果 |
mode |
|
big.mark |
特点;如果不为空,则用作小数点之前的每个 |
big.interval |
参见上面的 |
small.mark |
特点;如果不为空,则用作小数点后每个 |
small.interval |
参见上面的 |
decimal.mark |
用于指示数字小数点的字符。 |
input.d.mark |
如果 |
preserve.width |
字符串,指定在添加标记( |
zero.print |
逻辑、字符串或 |
replace.zero , replace |
逻辑性;如果 这是通过 |
warn.non.fitting |
逻辑性;如果为 true,则 |
drop0trailing |
逻辑,指示是否应删除尾随零,即小数点后的 |
is.cmplx |
可选逻辑,当 |
... |
参数传递给 |
nx |
与 |
细节
对于数字, formatC()
在需要时调用 prettyNum()
,而 prettyNum()
本身又调用 .format.zeros(*, replace=replace.zero)
。 (“when needed”:当 zero.print
不是 NULL
时,drop0trailing
为 true,或者 big.mark
、 small.mark
或 decimal.mark
之一不是默认值。)
如果您设置 format
,它将覆盖 mode
的设置,因此 formatC(123.45, mode = "double", format = "d")
给出 123
。
科学格式的呈现取决于平台:某些系统使用 n.ddde+nnn
或 n.dddenn
而不是 n.ddde+nn
。
formatC
不一定对齐小数点上的数字,因此 formatC(c(6.11, 13.1), digits = 2, format = "fg")
给出 c("6.1", " 13")
。如果您想要多个数字的通用格式,请使用 format
。
prettyNum
是美化 x
的实用函数。这里的 x
可以很复杂(或 format(<complex>)
)。如果 x
不是字符,则 format(x[i], ...)
应用于每个元素,然后如果所有其他参数均采用默认值,则保持不变。当 x
是 character
向量,而不是由像 format(<number>)
等以句点作为小数标记的向量产生时,请使用 prettyNum(x)
的 input.d.mark
参数。
由于 gsub
用于插入 big.mark
和 small.mark
,因此特殊字符需要转义。特别是,要插入单个反斜杠,请使用 "\\\\"
。
C 双打用于R数值向量有符号零,其中formatC
可能输出为-0
,-0.000
....
如果 big.mark
和 decimal.mark
相同,则会出现警告:这会让读取输出的人感到困惑。
值
在当前语言环境的编码中,与 x
具有相同大小和属性的字符对象(在丢弃任何类之后)。
与 format
不同,每个数字都是单独格式化的。循环 x
的每个元素,调用 C 函数 sprintf(...)
进行数字输入(在 C 函数 str_signif
内部)。
formatC
:对于字符 x
,使用空格进行简单(左或右)填充。
注意
默认为decimal.mark
在formatC()
被改变于R3.2.0:在以下范围内使用print
包中可能与早期版本一起使用的方法:usedecimal.mark = getOption("OutDec")
明确地。
例子
xx <- pi * 10^(-5:4)
cbind(format(xx, digits = 4), formatC(xx))
cbind(formatC(xx, width = 9, flag = "-"))
cbind(formatC(xx, digits = 5, width = 8, format = "f", flag = "0"))
cbind(format(xx, digits = 4), formatC(xx, digits = 4, format = "fg"))
f <- (-2:4); f <- f*16^f
# Default ("g") format:
formatC(pi*f)
# Fixed ("f") format, more than one flag ('width' partly "enlarged"):
cbind(formatC(pi*f, digits = 3, width=9, format = "f", flag = "0+"))
formatC( c("a", "Abc", "no way"), width = -7) # <=> flag = "-"
formatC(c((-1:1)/0,c(1,100)*pi), width = 8, digits = 1)
## note that some of the results here depend on the implementation
## of long-double arithmetic, which is platform-specific.
xx <- c(1e-12,-3.98765e-10,1.45645e-69,1e-70,pi*1e37,3.44e4)
## 1 2 3 4 5 6
formatC(xx)
formatC(xx, format = "fg") # special "fixed" format.
formatC(xx[1:4], format = "f", digits = 75) #>> even longer strings
formatC(c(3.24, 2.3e-6), format = "f", digits = 11)
formatC(c(3.24, 2.3e-6), format = "f", digits = 11, drop0trailing = TRUE)
r <- c("76491283764.97430", "29.12345678901", "-7.1234", "-100.1","1123")
## American:
prettyNum(r, big.mark = ",")
## Some Europeans:
prettyNum(r, big.mark = "'", decimal.mark = ",")
(dd <- sapply(1:10, function(i) paste((9:0)[1:i], collapse = "")))
prettyNum(dd, big.mark = "'")
## examples of 'small.mark'
pN <- stats::pnorm(1:7, lower.tail = FALSE)
cbind(format (pN, small.mark = " ", digits = 15))
cbind(formatC(pN, small.mark = " ", digits = 17, format = "f"))
cbind(ff <- format(1.2345 + 10^(0:5), width = 11, big.mark = "'"))
## all with same width (one more than the specified minimum)
## individual formatting to common width:
fc <- formatC(1.234 + 10^(0:8), format = "fg", width = 11, big.mark = "'")
cbind(fc)
## Powers of two, stored exactly, formatted individually:
pow.2 <- formatC(2^-(1:32), digits = 24, width = 1, format = "fg")
## nicely printed (the last line showing 5^32 exactly):
noquote(cbind(pow.2))
## complex numbers:
r <- 10.0000001; rv <- (r/10)^(1:10)
(zv <- (rv + 1i*rv))
op <- options(digits = 7) ## (system default)
(pnv <- prettyNum(zv))
stopifnot(pnv == "1+1i", pnv == format(zv),
pnv == prettyNum(zv, drop0trailing = TRUE))
## more digits change the picture:
options(digits = 8)
head(fv <- format(zv), 3)
prettyNum(fv)
prettyNum(fv, drop0trailing = TRUE) # a bit nicer
options(op)
## The ' flag :
doLC <- FALSE # <= R warns, so change to TRUE manually if you want see the effect
if(doLC) {
oldLC <- Sys.getlocale("LC_NUMERIC")
Sys.setlocale("LC_NUMERIC", "de_CH.UTF-8")
}
formatC(1.234 + 10^(0:4), format = "fg", width = 11, flag = "'")
## --> ..... " 1'001" " 10'001" on supported platforms
if(doLC) ## revert, typically to "C" :
Sys.setlocale("LC_NUMERIC", oldLC)
作者
formatC
was originally written by Bill Dunlap for S-PLUS, later
much improved by Martin Maechler.
It was first adapted for R by Friedrich Leisch and since much improved by the R Core team.
参考
Kernighan, B. W. and Ritchie, D. M. (1988) The C Programming Language. Second edition. Prentice Hall.
也可以看看
format
。
sprintf
用于更通用的 C-like 格式。
相关用法
- R formatDL 格式说明列表
- R format 以通用格式编码
- R format.pval 设置 P 值格式
- R format.info 格式(.)信息
- R formals 访问和操纵形式参数
- R force 强制评估论证
- R forceAndCall 调用带有强制参数的函数
- R file.path 构造文件路径
- R funprog 函数式编程语言中常见的高阶函数
- R findInterval 查找区间数或索引
- R file.info 提取文件信息
- R file.show 显示一个或多个文本文件
- R factor 因子
- R function 函数定义
- R file.access 确定文件的可访问性
- R files 文件操作
- R file.choose 交互式选择文件
- R files2 目录和文件权限的操作
- R find.package 查找套餐
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R Sys.getenv 获取环境变量
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Formatting Using C-style Formats。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。