R中的某些类(列表list()
)没有类属性,但函数列表is
和inherits
无论如何都适用于它们:
> x <- list()
> is(x, "list")
[1] TRUE
但是,当设置class属性时,这将停止工作:
> attr(x, "class")
NULL
> attr(x, "class") <- "myListSubclass"
> x
list()
attr(,"class")
[1] "myListSubclass"
> is(x, "list")
[1] FALSE
> inherits(x, "list")
[1] FALSE
设置class属性使得处理类的这些普通函数停止工作。
有没有办法在R中扩展像list
这样的类来获得正确的行为? (也许在class属性中包含list
?还是会有其他问题?)
使用I()
时这也是一个问题。结果列表包含AsIs
类属性,因此is
,inherits
等不起作用。什么是最好的解决方案? (这是一个错误吗?)