如何确定一个对象的类

时间:2015-10-23 11:26:45

标签: r oop

注意 - 相关问题并未解释为什么attr(myVar, "class")会返回NULL而不会list(以及为什么class(myVar)会返回list)。 R中用于检查对象类的标准方式是什么?

如何确定对象是否是"我的自定义类"或者是一个"列表"我的定制班"对象

foo <- function(x) {
  a=list(x=x)
  attr(a, "class") <- "myclass"
  return(a)
}

newVar = list(foo(10),foo(20))

现在我想找出newVar的哪一类。

attr(newVar, "class")  # NULL, but not list!
#NULL

##however this works fine
attr(newVar[[1]], "class")
#[1] "myclass"

为什么会这样?在R中确定类的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

确定对象的S3类的“正确方法”是使用函数class

隐含类:

class(list(1))
#[1] "list"
class(1:5)
#[1] "integer"

明确的课程:

class(list(1))
class(lm(Sepal.Length ~ Sepal.Width, data = iris))
#[1] "lm"

x <- 1:5
class(x) <- "myclass"
class(x)
#[1] "myclass"

由于列表可以包含任何内容,因此您必须遍历它以查找其中的对象类,例如sapply(yourlist, class)

类ID存储为属性(名称,维度和其他一些东西),但通常您不需要担心这样的内部因素,因为R提供了访问器功能。