R:命名列表和描述列表

ant*_*nio 5 r list named

R 有两个不常用的类:“Dlist”和“namedList”。

关于第一个,它是关于 的Sys.getenv(),如果其参数丢失,它会返回类“Dlist”的结果,以进行良好的打印。事实上,该类有一个print.Dlist方法。还有一个 formatDL与格式化描述列表明显相关的函数。但是我不知道如何创建“Dlist”类的对象。

至于“namedList”,手册中是这样定义的:

保留名称属性的“列表”的替代方案

在这种情况下,我无法创建这种类型的对象,也没有找到任何使用它的实例。

如何创建“Dlist”或“namedList”?
您能否提供一个示例,其中“namedList”比普通命名列表更方便?(旨在作为一个列表L,其中names(L)不是NULL

All*_*ron 7

ADlist是 R 的 Base 包中定义的非正式类,其存在的唯一目的是漂亮地打印命名字符向量。它根本不是一个列表,而是一种字符向量:

\n\n
a <- Sys.getenv()\nclass(a)\n# [1] "Dlist"\ntypeof(a)\n# [1] "character"\n
Run Code Online (Sandbox Code Playgroud)\n\n

您只需写入Dlist命名字符向量的类属性即可创建一个:

\n\n
hello_world <- c(Hello = "World", Hi = "Earth", Greetings = "planet"); \nclass(hello_world) <- "Dlist"\n\nhello_world\n# Hello                    World\n# Hi                       Earth\n# Greetings                planet\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以使用以下方式选择格式选项formatDL

\n\n
hello_world <- c(Hello = "World", Hi = "Earth", Greetings = "planet"); \nclass(hello_world) <- "Dlist"\n\nhello_world\n# Hello                    World\n# Hi                       Earth\n# Greetings                planet\n
Run Code Online (Sandbox Code Playgroud)\n\n

Dlist 仅在基本 R 中用于将环境变量打印到控制台。除非您想以这种方式打印命名字符向量,否则不需要 Dlist。

\n\n
\n\n

另一方面,namedList 是methods包中定义的正式 S4 对象(也在 R 中预加载)。它继承了它的属性list并定义了一个方法——它自己的通用 S4 版本show。\n您可以使用它作为基类来创建继承命名列表(即具有属性的普通列表names)属性的新 S4 类,尽管尚不清楚为什么用户高级到足以创建 S4 类他们自己不会这样做。它在这里定义

\n\n

您可以使用以下命令创建一个命名列表new

\n\n
cat(formatDL(hello_world, style = "list", width = 20), sep = "\\n")\n# Hello: World\n# Hi: Earth\n# Greetings: planet\n
Run Code Online (Sandbox Code Playgroud)\n