A Dlist
是 R 的 Base 包中定义的非正式类,其存在的唯一目的是漂亮地打印命名字符向量。它根本不是一个列表,而是一种字符向量:
a <- Sys.getenv()
class(a)
# [1] "Dlist"
typeof(a)
# [1] "character"
你可以通过写来制作一个Dlist
指定字符向量的类属性:
hello_world <- c(Hello = "World", Hi = "Earth", Greetings = "planet");
class(hello_world) <- "Dlist"
hello_world
# Hello World
# Hi Earth
# Greetings planet
您可以选择格式选项formatDL
:
cat(formatDL(hello_world, style = "list", width = 20), sep = "\n")
# Hello: World
# Hi: Earth
# Greetings: planet
Dlist 仅在基本 R 中用于将环境变量打印到控制台。除非您想以这种方式打印命名字符向量,否则不需要 Dlist。
另一方面,namedList 是一个正式的 S4 对象,如methods
包(也在 R 中预加载)。它继承了它的属性list
并定义了一个方法 - 它自己的通用 S4 版本show
。
您可以使用它作为基类,从中创建继承命名列表属性的新 S4 类(即带有names
属性),尽管尚不清楚为什么高级到足以创建 S4 类的用户不自己做这件事。已定义here.
您可以使用以下命令创建一个命名列表new
:
n <- new("namedList", list(a=1, b=2))
n
# An object of class “namedList”
# $`a`
# [1] 1
#
# $b
# [1] 2
isS4(n)
# [1] TRUE