deparseOpts
位于 base
包(package)。 说明
处理 deparse
、 dput
和 dump
的解析选项。
用法
.deparseOpts(control)
..deparseOpts
参数
control |
解析选项的特征向量。 |
细节
..deparseOpts
是 .deparseOpts()
使用的可能解析选项的 character
向量。
.deparseOpts()
由 deparse
、 dput
和 dump
调用来处理它们的 control
参数。
control
参数是一个向量,包含零个或多个以下字符串(正是 ..deparseOpts
中的字符串)。使用部分字符串匹配。
"keepInteger"
:-
用
as.integer()
包围整数向量或使用后缀L
,这样它们在解析时不会转换为 double 类型。这包括确保保留整数NA
(如果向量中没有非NA
值,则通过NA_integer_
,除非设置了"S_compatible"
)。 "quoteExpressions"
:-
用
quote()
包围未计算的表达式,但不包括formula
,因此重新解析时不会计算它们。 "showAttributes"
:-
如果对象具有
attributes
(source
属性除外,请参阅srcref
),请使用structure()
显示它们以及对象值,除非唯一的此类属性是names
和"niceNames"
选项已设置。此 ("showAttributes"
) 是deparse
和dput
的默认值。 "useSource"
:-
如果对象具有
source
属性 (srcref
),则显示该属性而不是解析该对象。目前仅适用于函数定义。 "warnIncomplete"
:-
一些外来对象(例如environment、外部指针等)无法正确解析。如果解析器识别出其中一种情况,此选项会发出警告。
另外,解析器在R< 2.7.0 只接受最多 8192 字节的字符串,并且此选项会针对较长的字符串发出警告。
"keepNA"
:-
整数、实数和字符
NA
必要时,s 被强制函数包围,以确保它们被解析为相同的类型。因为例如NA_real_
可以输出在R,这主要用于连接S_compatible
. "niceNames"
:-
如果为 true,则
list
和具有非NA
名称的原子向量(请参阅names
)将被解析为c(A = 1)
而不是structure(1, names = "A")
,与"showAttributes"
设置无关。 "all"
:-
指定上面列出的所有选项加上
"digits17"
的缩写方式。这是dump
的默认选项,如果没有"digits17"
,则为edit
使用的选项(已修复)。 "delayPromises"
:-
以 <promise: expression> 的形式解析 Promise,而不是评估它们。 Promise 的值和环境将不会显示,并且无法获取解析后的代码。
"S_compatible"
:-
使deparsing尽可能兼容S和R< 2.5.0。为了与 S 兼容,双精度向量的整数值用尾随小数点进行解析。不使用反引号。
"hexNumeric"
:-
实数和有限复数在‘中输出"%a"’ 格式为二进制分数(编码为十六进制:参见
sprintf
)以最大的机会进行完全精确的记录。输出具有一个或两个非有限分量的复数,就像未设置此选项一样。(这依赖于正确支持该格式:Windows 上的已知问题已从R3.1.2.)
"digits17"
:-
使用格式‘输出实数和有限复数"%.17g"’这可能会比默认值提供更高的精度(但输出将取决于平台,并且读回时可能会损失精度)。输出具有一个或两个非有限分量的复数,就像未设置此选项一样。
"exact"
:-
指定
control = c("all", "hexNumeric")
的缩写方法,保证数字准确,另请参见下文。
对于最易读(但可能不完整)的显示,请使用 control = NULL
。这显示对象的值,但不显示其属性。 deparse
中的默认设置也是显示属性,但不使用任何其他选项来使结果可解析。 ( dump
通过 control = "all"
使用更多默认选项,并且打印没有源的函数使用 c("keepInteger", "keepNA")
,可以在其中添加 "warnIncomplete"
。)
使用 control = "exact"
(control = c("all", "hexNumeric")
的缩写)最接近于使 deparse()
成为 parse()
的逆(但我们还没有看到 "all"
(现在包括 "digits17"
)的示例)不会那么好)。然而,即使使用这些选项,也不是所有对象都是deparse-able,如果函数识别出它被要求做不可能的事情,就会发出警告。
只能指定"hexNumeric"
和"digits17"
之一。
值
与所选 control
选项相对应的整数值。
例子
stopifnot(.deparseOpts("exact") == .deparseOpts(c("all", "hexNumeric")))
(iOpt.all <- .deparseOpts("all")) # a four digit integer
## one integer --> vector binary bits
int2bits <- function(x, base = 2L,
ndigits = 1 + floor(1e-9 + log(max(x,1), base))) {
r <- numeric(ndigits)
for (i in ndigits:1) {
r[i] <- x%%base
if (i > 1L)
x <- x%/%base
}
rev(r) # smallest bit at left
}
int2bits(iOpt.all)
## What options does "all" contain ? =========
(depO.indiv <- setdiff(..deparseOpts, c("all", "exact")))
(oa <- depO.indiv[int2bits(iOpt.all) == 1])# 8 strings
stopifnot(identical(iOpt.all, .deparseOpts(oa)))
## ditto for "exact" instead of "all":
(iOpt.X <- .deparseOpts("exact"))
data.frame(opts = depO.indiv,
all = int2bits(iOpt.all),
exact= int2bits(iOpt.X))
(oX <- depO.indiv[int2bits(iOpt.X) == 1]) # 8 strings, too
diffXall <- oa != oX
stopifnot(identical(iOpt.X, .deparseOpts(oX)),
identical(oX[diffXall], "hexNumeric"),
identical(oa[diffXall], "digits17"))
相关用法
- R deparse 表达式解析
- R debug 调试函数
- R delayedAssign 延迟评估和承诺
- R det 计算矩阵的行列式
- R detach 从搜索路径中分离对象
- R dump R 对象的文本表示
- R diag 矩阵对角线
- R dots ...、..1 等在函数中使用
- R do.call 执行函数调用
- R dcf 以 DCF 格式读写数据
- R data.class 对象类
- R dimnames 对象的暗名称
- R dyn.load 对外函数接口
- R diff 滞后差异
- R dput 将对象写入文件或重新创建它
- R duplicated 确定重复元素
- R dim 物体的尺寸
- R dontCheck 抑制检查的身份函数
- R drop 删除冗余盘区信息
- R difftime 时间间隔/差异
- R data.frame DataFrame
- R double 双精度向量
- R data.matrix 将 DataFrame 转换为数字矩阵
- R date 系统日期和时间
- R droplevels 删除因子中未使用的级别
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Options for Expression Deparsing。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。