繁体   English   中英

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

[英]Include base type (e.g. list) as a class attribute?

我正在编写一个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,但我不知道何时/为什么这样做。

我的问题如下:在任何情况下我都应该担心将'list'作为一个类名去掉? 我应该改用:

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

基本上我不知道/如果找不到类'list'但是存储模式仍然是列表时函数调度是否失败。 我试过阅读文档,但没有看到这个特殊问题。 如果有人可以向我指出相关信息,我很高兴阅读手册。 谢谢!

通常,可以基于“list”类来分派一些包中的一些功能。 例如as.data.frame或在基数R within

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

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

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

methods(class = "list")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM