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