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


R RMethodUtils 方法實用程序


R語言 RMethodUtils 位於 methods 包(package)。

說明

支持形式方法的定義和使用的實用函數。大多數這些函數通常不會被用戶直接調用。

用法

getGeneric(f, mustFind=FALSE, where, package)

getGroup(fdef, recursive, where)
getGroupMembers(group, recursive = FALSE, character = TRUE)

getMethodsMetaData(f, where)
assignMethodsMetaData (f, value, fdef, where)

makeGeneric(f, fdef, fdefault =, group=list(), valueClass=character(),
            package =, signature = NULL, genericFunction = NULL,
            simpleInheritanceOnly = NULL)

makeStandardGeneric(f, fdef)

generic.skeleton(name, fdef, fdefault)

defaultDumpName(generic, signature)

doPrimitiveMethod(name, def, call= sys.call(sys.parent()),
                  ev = sys.frame(sys.parent(2)))

conformMethod(signature, mnames, fnames, f= , fdef, method)

matchSignature(signature, fun, where)

findUnique(what, message, where)

MethodAddCoerce(method, argName, thisClass, methodClass)

cacheMetaData(where, attach = TRUE, searchWhere = as.environment(where),
              doCheck = TRUE)

cacheGenericsMetaData(f, fdef, attach = TRUE, where, package, methods)

setPrimitiveMethods(f, fdef, code, generic, mlist)

missingArg(symbol, envir = parent.frame(), eval)

sigToEnv(signature, generic)

rematchDefinition(definition, generic, mnames, fnames, signature)
unRematchDefinition(definition)
isRematched(definition)

asMethodDefinition(def, signature, sealed = FALSE, fdef)

addNextMethod(method, f, mlist, optional, envir)

insertClassMethods(methods, Class, value, fieldNames, returnAll)

balanceMethodsList(mlist, args, check = TRUE) # <- deprecated since R 3.2.0

substituteFunctionArgs(def, newArgs, args = formalArgs(def),
                       silent = FALSE, functionName = "a function") 

.valueClassTest(object, classes, fname)

函數概要

getGeneric

返回名為 f 的函數的定義作為泛型。

如果沒有找到定義,則根據 mustFind 的值拋出錯誤或返回 NULL 。默認情況下,在頂級環境中搜索(通常是全局環境,但在從函數 library 評估包代碼時進行調整以正常工作)。

原始函數需要特殊處理,因為它們從來沒有正式的通用定義。返回的值是用於向該原語分配方法的正式定義。並非所有原語都可以有方法;如果不能,則 getGeneric 返回 NULL 或引發錯誤。

getGroup

返回此泛型所屬的組,從環境 where(默認情況下通常是全局環境)搜索。

如果是 recursive=TRUE ,還有這些組中的所有組。

getGroupMembers

返回名為 group 的組通用函數的所有成員。如果 recursiveTRUE ,並且某些成員是組泛型,則也包括其成員。如果 characterTRUE ,則僅返回名稱的字符向量;否則返回一個列表,其元素可能(也可能不)包含具有包屬性的名稱或實際的通用函數。

請注意,未定義為泛型函數的成員將不會包含在返回值中。要查看原始數據,請使用getGeneric(group)@groupMembers

getMethodsMetaDataassignMethodsMetaDatamlistMetaName

用於獲取 ( getMethodsMetaData ) 和分配 ( assignMethodsMetaData ) 記錄特定包中定義的方法的元數據對象,或返回該對象的損壞名稱 ( mlistMetaName ) 的實用程序。

不應直接使用分配函數。如果您隻需要顯式地獲取此包中分配的方法的結果,則 get 函數可能很有用。否則,請使用 getMethods

matchSignature

匹配簽名對象(通用函數對象 fun 的簽名參數的部分或完整命名子集),並按 fun@signature 指定的順序返回所有類的向量。 signature 未指定的類將在值中為 "ANY",但多餘的尾部 "ANY" 將被刪除。當輸入簽名為空時,返回的簽名是與第一個形式參數匹配的單個"ANY"(因此返回值始終非空)。

如果提供的任何簽名名稱不合法,則生成錯誤;也就是說,不在通用函數的簽名槽中。

如果提供了參數where,如果任何類沒有從 where 可見的正式定義,則會發出警告。

MethodAddCoerce

可能會修改一個或多個方法以顯式將此參數強製為 methodClass (顯式定義該方法的類)。僅當需要顯式強製從 thisClass 強製到 methodClass 時才修改該方法。

findUnique

使用環境 where 及其父環境,返回具有名為 what 的對象的環境(或等效環境)列表。如果找到多個,則會生成一條警告消息,並使用 message 來標識正在搜索的內容,除非 message 是空字符串。

cacheMetaDatacacheGenericsMetaDatasetPrimitiveMethods

用於確保有關類和方法定義的內部信息是最新的實用程序。通常應在需要時自動調用(例如,當方法或類定義更改時,或者附加或分離包時)。必需的主要是因為原始函數是在 C 代碼中調度的,而不是由官方模型調度的。

setPrimitiveMethods 函數重置特定原語函數的緩存信息。不要直接調用它。

missingArg

如果與所提供的環境(默認情況下為 missingArg 的調用環境)相對應的調用中缺少所提供的符號,則返回 TRUE 。如果 eval 為 true,則評估參數以獲取要測試的符號名稱。請注意,missingArg 更接近 missing 函數的“藍皮書”意義,而不是當前 R 基礎包實現的意義。但請注意,僅當尚未對參數進行賦值時,它才可靠地工作。 (對於方法分派來說,這很好,因為計算是在調用開始時完成的。)

balanceMethodsList

曾經被稱為setMethod()並且是已棄用自從R版本 3.2.0。

sigToEnv

將簽名(類的命名向量)轉換為具有分配給名稱的類的環境。該環境適合調用 MethodsListSelectevalArgs=FALSE 來選擇與簽名對應的方法。通常不直接調用:參見selectMethod

.saveImage

標誌,用於動態初始化 .onLoad 中的方法包。

rematchDefinitionunRematchDefinitionisRematched

如果調用 setMethod 時指定的方法專用於參數列表(通過替換 ...),則 rematchDefinition 構造存儲的實際方法。利用 rematchDefinition 工作原理的知識,unRematchDefinition 反轉了該過程;如果給定的函數或方法定義與此形式不對應,則它僅返回其參數。 isRematched 返回一個邏輯值,指示在構造給定方法時是否使用了重新匹配。

asMethodDefinition

將函數定義轉換為類 MethodDefinition 的對象,對應於給定的 signature (默認情況下生成帶有空簽名的默認方法)。該定義根據 sealed 參數進行密封。

addNextMethod

一個通用函數,用於查找方法定義 method 簽名的下一個方法,並將該方法緩存在方法定義中(將類提升為 "MethodWithNext" )。請注意,參數 mlist 已過時且未使用。

makeGeneric

創建與給定函數名稱、可選定義和可選默認方法相對應的通用函數對象。其他參數為類 genericFunction 的槽提供可選元素。

makeStandardGeneric

一個實用程序函數,使調用 standardGeneric 的有效函數名為 f 。即使實際定義 fdef 不是一個正確的函數(即,它是一個原語或內部函數),它也可以(或多或少)工作。

conformMethod

如果形式參數 mnames 與函數的形式參數 fnamesconformMethod 確定簽名和兩組參數是否一致,並返回簽名(可能是擴展的)。函數名稱 f 是為錯誤消息提供的。通用函數 fdef 提供用於匹配目的的通用簽名。

如果方法和泛型函數具有相同的形式參數列表,則方法分配符合。如果方法省略了函數的一些形式參數,它也可以符合,但是: (1) 未省略的參數是函數參數的子集,以相同的順序出現; (2) 方法中沒有任何參數不是函數的參數; (3) 省略的形式參數不會作為顯式類出現在簽名中。未來的擴展還希望測試是否將省略的參數用作方法主體中的本地分配名稱或函數名稱。

defaultDumpName

用於轉儲方法的默認名稱。

doPrimitiveMethod

對提供的定義和調用的內置函數 name 進行原始調用,並在環境 ev 中執行。

當實際方法是 .Primitive 時,將調用 doPrimitiveMethod。 (因為基元不能像普通函數那樣正確運行,既沒有形式參數,也沒有函數體)。

例子

getGroup("exp")
getGroup("==", recursive = TRUE)

getGroupMembers("Arith")
getGroupMembers("Math")
getGroupMembers("Ops") # -> its sub groups

也可以看看

setGenericsetClassshowMethods

相關用法


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