包括基类型(例如列表)作为类属性?

时间:2015-03-04 07:35:38

标签: r

我正在编写一个R包,它围绕分析存储在列表中的一些数据。例如,

myData <- list(x = "x vector", y = "another vector", 
    z = "function(x,y)", meta = "info about this dataset")

字符值只是描述,因为这些值不相关。我有一些以列表格式存储的不同类型的数据,但是有一些重叠,所以我给每种类型一个类属性,比如这个

class(myData) <- "datatype1"

现在我已经对此进行了测试,并看到了像

这样的内容
length(myData) ; myData$x

仍在工作,我的印象是这是因为存储模式仍然是一个列表,我尝试的操作是.Primitve或.Internal,但我不知道何时/为什么会这样。

我的问题如下:在任何情况下我都应该担心摆脱&#39; list&#39;作为班级名称?我应该改用:

class(myData) <- c("datatype1", "list")

基本上我不知道,如果班级列表&#39;找不到但存储模式仍然是一个列表。我试过阅读文档并且没有看到这个特殊问题。如果有人可以向我指出相关信息,我很高兴阅读该手册。谢谢!

1 个答案:

答案 0 :(得分:0)

通常,可以根据“list”类调度某些包中的某些函数。例如,基础R中的as.data.framewithin

list1 <- list(a = 1)
class(list1) <- "nolist" 
within(list1, a <- 4)
  

UseMethod(“within”)中的错误:     没有适用于'内部'的方法适用于“nolist”类的对象

对于“列表”依赖方法检查

methods(class = "list")