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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。