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


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