如何从 R 中的引用 class 中获取 class 名称的列表
how to get list of class names from reference class in R
我有这个代码:
private$svg <- if(is(private$idaPlotObj, "DivosGridBmiPlot")){
...
} else {
...
}
在我的代码中,我正在尝试重构此代码并从 private$idaPlotObj 中获取 classes 的列表,这是引用 class,但我得到的只是:
[1] "BMIDynamicRatiosPlot"
attr(,"package")
[1] "divosBMI"
当我使用 attr(private$idaPlotObj,"class")
或 class(private$idaPlotObj)
时
如何从引用 class 中获取所有 class 个名称?如果我有 4 个 classes,我将需要用 is
检查每个。我想比较向量以测试 class 是否在列表中。
以下是你可以做的参考类:
object@.xData$.refClassDef@refSuperClasses
示例:
setRefClass("Polygon", fields = list(sides="integer"))
setRefClass("Regular")
setRefClass("Triangle", contains = "Polygon")
EQL = setRefClass("EquilateralTriangle", contains = c("Triangle", "Regular"))
tri1 <- EQL$new(sides=3L)
现在要获取 tri1
的所有 类,我们这样做:
tri1@.xData$.refClassDef@refSuperClasses
[1] "Triangle" "Regular" "Polygon" "envRefClass"
编辑
将所有内容放在一起,您可以这样做:
getRefClassNames <- function(obj) {
c(class(obj), head(obj@.xData$.refClassDef@refSuperClasses, -1))
}
这是一个将其分成几个步骤的解决方案:
- 获取对象的当前class名称:
myclass <- class(private$idaPlotObj)
- 使用
getRefClass
获取有关关联 classes 的信息:
class_info <- getRefClass(myclass)
- 你得到一个对象,其中的信息有点隐藏,所以你必须提取它:
class_info@generator$def@refSuperClasses
我有这个代码:
private$svg <- if(is(private$idaPlotObj, "DivosGridBmiPlot")){
...
} else {
...
}
在我的代码中,我正在尝试重构此代码并从 private$idaPlotObj 中获取 classes 的列表,这是引用 class,但我得到的只是:
[1] "BMIDynamicRatiosPlot"
attr(,"package")
[1] "divosBMI"
当我使用 attr(private$idaPlotObj,"class")
或 class(private$idaPlotObj)
如何从引用 class 中获取所有 class 个名称?如果我有 4 个 classes,我将需要用 is
检查每个。我想比较向量以测试 class 是否在列表中。
以下是你可以做的参考类:
object@.xData$.refClassDef@refSuperClasses
示例:
setRefClass("Polygon", fields = list(sides="integer"))
setRefClass("Regular")
setRefClass("Triangle", contains = "Polygon")
EQL = setRefClass("EquilateralTriangle", contains = c("Triangle", "Regular"))
tri1 <- EQL$new(sides=3L)
现在要获取 tri1
的所有 类,我们这样做:
tri1@.xData$.refClassDef@refSuperClasses
[1] "Triangle" "Regular" "Polygon" "envRefClass"
编辑
将所有内容放在一起,您可以这样做:
getRefClassNames <- function(obj) {
c(class(obj), head(obj@.xData$.refClassDef@refSuperClasses, -1))
}
这是一个将其分成几个步骤的解决方案:
- 获取对象的当前class名称:
myclass <- class(private$idaPlotObj)
- 使用
getRefClass
获取有关关联 classes 的信息:
class_info <- getRefClass(myclass)
- 你得到一个对象,其中的信息有点隐藏,所以你必须提取它:
class_info@generator$def@refSuperClasses