當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R format 以通用格式編碼


R語言 format 位於 base 包(package)。

說明

格式化一個R用於漂亮打印的對象。

用法

format(x, ...)

## Default S3 method:
format(x, trim = FALSE, digits = NULL, nsmall = 0L,
       justify = c("left", "right", "centre", "none"),
       width = NULL, na.encode = TRUE, scientific = NA,
       big.mark   = "",   big.interval = 3L,
       small.mark = "", small.interval = 5L,
       decimal.mark = getOption("OutDec"),
       zero.print = NULL, drop0trailing = FALSE, ...)

## S3 method for class 'data.frame'
format(x, ..., justify = "none")

## S3 method for class 'factor'
format(x, ...)

## S3 method for class 'AsIs'
format(x, width = 12, ...)

參數

x

任何R對象(概念上);通常是數字。

trim

邏輯性;如果 FALSE ,則邏輯值、數字值和複數值右對齊到公共寬度:如果 TRUE 則抑製用於對齊的前導空白。

digits

一個正整數,指示數字和複數 x 使用多少位有效數字。默認值 NULL 使用 getOption("digits") 。這是一個建議:將使用足夠的小數位,以便最小的(大小)數字具有這麽多的有效數字,並且還滿足 nsmall 。 (有關更多信息,尤其是複數的解釋,請參閱 signif 。)

nsmall

以非科學格式格式化實數/複數時小數點右側的最小位數。允許的值為 0 <= nsmall <= 20

justify

字符向量應該左對齊(默認)、右對齊、居中還是單獨左對齊。可以縮寫。

width

default方法:最小字段寬度或NULL0無限製。

AsIs方法:非字符對象的最大字段寬度。 NULL 對應於默認的 12

na.encode

邏輯:NA 字符串應該被編碼嗎?請注意,這僅適用於字符向量的元素,不適用於數字、複雜或邏輯 NA ,它們始終編碼為 "NA"

scientific

指定實向量或複向量的元素是否應以科學格式編碼的邏輯,或整數懲罰(請參閱 options("scipen") )。缺失值對應於當前的默認懲罰。

...

傳入或傳出其他方法的進一步參數。

big.mark , big.interval , small.mark , small.interval , decimal.mark , zero.print , drop0trailing

用於美化(較長的)數字和複雜序列。傳遞到prettyNum:該幫助頁麵解釋了詳細信息。

細節

format 是一個通用函數。除了此處說明的方法之外,還有用於日期的方法(請參閱 format.Date )、date-times (請參閱 format.POSIXct )以及其他類(例如 format.octmodeformat.dist )。

format.data.frame 逐列格式化數據幀,對每列應用 format 的適當方法。列的方法通常與 as.character 類似,但提供更多控製。矩陣和 data-frame 列將在結果中轉換為單獨的列,字符列(通常是全部)將被賦予類 "AsIs"

format.factor 將因子轉換為字符向量,然後調用默認方法(因此 justify 適用)。

format.AsIs 處理從數據幀中提取的複雜對象列。字符對象和(原子)矩陣傳遞給默認方法(因此 width 不適用)。否則,它調用 toString 將對象轉換為字符(如果是向量或列表,逐個元素),然後右對齊結果。

字符向量(以及通過其方法轉換為字符向量的對象)的調整是在顯示寬度上完成的(請參閱 nchar ),采用雙寬度字符和特殊字符的呈現(作為轉義序列,包括轉義反斜杠但不轉義雙引號) :請參閱 print.default )。因此,寬度由 print(quote = FALSE) 顯示,而不是由 cat 顯示。字符串用空格填充至最寬的顯示寬度。 (如果 na.encode = FALSE 缺失的字符串不包含在寬度計算中並且不進行編碼。)

數字向量使用最少的小數位數進行編碼,以將所有元素顯示為至少 digits 有效數字。然而,如果所有元素都有尾隨零,則小數位數會減少,直到至少一個元素具有非零的最終數字;另請參閱上麵 big.*small.* 等的參數文檔。請參閱 print.default 中有關 digits >= 16 的注釋。

原始向量由 as.character 轉換為其 2 位十六進製表示形式。

isS4(x) 為 true 時,format.default(x) 現在提供 “minimal” 字符串。

雖然內部代碼通常尊重“小數點”選項 getOption("OutDec"),但 decimal.mark 優先於該選項。同樣, scientific 優先於 getOption("scipen")

x 結構類似的對象,包含第一個參數 x 的元素的字符表示形式,采用通用格式,並采用當前區域設置的編碼。

對於字符、數字、複數或因子 x ,暗淡和暗淡名稱保留在矩陣/數組上,名稱保留在向量上:不複製其他屬性。

如果 x 是列表,則結果是通過將 format.default(x, ...) 應用於列表的每個元素(在本身就是列表的 unlisting 元素之後),然後使用 paste(collapse = ", ") 折疊每個元素的結果而獲得的字符向量。本例中的默認值是trim = TRUE, justify = "none",因為人們通常不希望在折疊的字符串中對齊。

例子

format(1:10)
format(1:10, trim = TRUE)

zz <- data.frame("(row names)"= c("aaaaa", "b"), check.names = FALSE)
format(zz)
format(zz, justify = "left")

## use of nsmall
format(13.7)
format(13.7, nsmall = 3)
format(c(6.0, 13.1), digits = 2)
format(c(6.0, 13.1), digits = 2, nsmall = 1)

## use of scientific
format(2^31-1)
format(2^31-1, scientific = TRUE)
## scientific = numeric scipen (= {sci}entific notation {pen}alty) :
x <- c(1e5, 1000, 10, 0.1, .001, .123)
t(sapply(setNames(,-4:1),
         \(sci) sapply(x, format, scientific=sci)))


## a list
z <- list(a = letters[1:3], b = (-pi+0i)^((-2:2)/2), c = c(1,10,100,1000),
          d = c("a", "longer", "character", "string"),
          q = quote( a + b ), e = expression(1+x))
## can you find the "2" small differences?
(f1 <- format(z, digits = 2))
(f2 <- format(z, digits = 2, justify = "left", trim = FALSE))
f1 == f2 ## 2 FALSE, 4 TRUE

## A "minimal" format() for S4 objects without their own format() method:
cc <- methods::getClassDef("standardGeneric")
format(cc) ## "<S4 class ......>"

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

format.info 指示原子向量的格式。

formatC , paste , as.character , sprintf , print , prettyNum , toString , encodeString

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Encode in a Common Format。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。