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


R classesToAM 计算类定义的超类的邻接矩阵


R语言 classesToAM 位于 methods 包(package)。

说明

给定类名向量或类定义列表,该函数返回这些类的超类的邻接矩阵;也就是说,一个以类名作为行名和列名的矩阵,如果第 j 列中的类是第 i 行中类的直接超类,则元素 [i, j] 为 1,否则为 0。

该矩阵具有类定义的 contains 槽隐含的信息,但其形式通常更便于进一步分析;例如,在软件包和其他软件中使用邻接矩阵来构建关系的图形表示。

用法

classesToAM(classes, includeSubclasses = FALSE,
       abbreviate = 2)

参数

classes

类名称的字符向量或列表,其元素可以是类名称或类定义。该列表很方便,例如包含类名的包槽。请参阅示例。

includeSubclasses

逻辑标志;如果 TRUE ,则矩阵将包括指定类的所有已知子类以及超类。该参数也可以是与 classes 长度相同的逻辑向量,以包含某些但不是所有类的子类。

abbreviate

控制返回矩阵的行和/或列标签的缩写:值 0、1、2 或 3 都不缩写、行、列或两者都缩写。默认值 2 对于打印矩阵很有用,因为类名往往超过一个字符长,适合 spread-out 打印。值 0 或 3 适合制作图表(3 避免了某些图表绘制软件生成小字体标签的倾向)。

细节

对于每个类,计算从类定义中获取所有超类名称,并找到这些类定义中的边;即距离为1的所有超类。邻接矩阵的相应元素设置为1。

各个类定义的邻接矩阵被合并。请注意两种可能的不一致,这两种不一致都不会导致问题,除非可能来自不同包的同名类。边是根据每个超类定义计算的,因此信息会覆盖距离 > 1 的扩展元素的可能推断(而且应该如此)。当参数中连续类的矩阵被合并时,计算当前不会检查不一致之处 - 这是多个具有相同名称的类可能会导致混乱的区域。稍后的修订可能包括一致性检查。

如所说明的,具有条目0或1的矩阵,非零值指示对应于列的类是对应于行的类的直接超类。行和列名称是类名称(不包含包槽)。

例子


## the super- and subclasses of "standardGeneric"
## and "derivedDefaultMethod"
am <- classesToAM(list(class(show), class(getMethod(show))), TRUE)
am

## Not run: 
## the following function depends on the Bioconductor package Rgraphviz
plotInheritance <- function(classes, subclasses = FALSE, ...) {
    if(!require("Rgraphviz", quietly=TRUE))
      stop("Only implemented if Rgraphviz is available")
    mm <- classesToAM(classes, subclasses)
    classes <- rownames(mm); rownames(mm) <- colnames(mm)
    graph <-  new("graphAM", mm, "directed", ...)
    plot(graph)
    cat("Key:\n", paste(abbreviate(classes), " = ", classes, ", ",
        sep = ""),  sep = "", fill = TRUE)
    invisible(graph)
}

## The plot of the class inheritance of the package "graph"
require(graph)
plotInheritance(getClasses("package:graph"))


## End(Not run)

也可以看看

extendsclassRepresentation 用于获取类定义的基础信息。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Compute an Adjacency Matrix for Superclasses of Class Definitions。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。