注意 - 相关问题并未解释为什么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中确定类的正确方法是什么?
答案 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提供了访问器功能。