当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。