R:命名列表和描述列表
R: Named lists and description lists
R 有两个不太常用的 class:"Dlist" 和 "namedList"。
关于第一个,它是关于 Sys.getenv()
提到的,它 returns 是 class "Dlist" 的结果,如果它的参数丢失,为了漂亮的打印. class 实际上有一个 print.Dlist
方法。还有一个明显相关的 formatDL
函数来格式化描述列表。但是我不知道如何创建 class "Dlist" 的对象。
关于"namedList",手册是这么定义的:
the alternative to "list" that preserves the names attribute
在这种情况下,我无法创建这种类型的对象,而且我还没有找到任何使用它的实例。
如何创建 "Dlist" 或 "namedList"?
您能否提供一个示例,其中 "namedList" 比普通的 命名列表 更方便? (旨在作为列表 L
,其中 names(L)
不是 NULL
)
A Dlist
是 R 的 Base 包中定义的非正式 class,其存在的唯一目的是漂亮地打印一个命名的字符向量。它根本不是一个列表,而是一种字符向量:
a <- Sys.getenv()
class(a)
# [1] "Dlist"
typeof(a)
# [1] "character"
您只需将 Dlist
写入命名字符向量的 class 属性即可创建:
hello_world <- c(Hello = "World", Hi = "Earth", Greetings = "planet");
class(hello_world) <- "Dlist"
hello_world
# Hello World
# Hi Earth
# Greetings planet
您可以 select 格式化选项 formatDL
:
cat(formatDL(hello_world, style = "list", width = 20), sep = "\n")
# Hello: World
# Hi: Earth
# Greetings: planet
Dlist 仅在 base R 中用于将环境变量打印到控制台。除非您想以这种方式打印命名的字符向量,否则您不需要 Dlist。
另一方面,namedList 是 methods
包中定义的正式 S4 对象(也在 R 中预加载)。它从 list
继承了它的属性并定义了一个方法——它自己的通用 S4 show
版本。
您可以将它用作基础 class,从中创建继承命名列表属性的新 S4 classes(即具有 names
属性的普通列表),尽管它不是清楚为什么一个用户足够先进来创建 S4 classes 不会自己做。它被定义为 here.
您可以使用 new
创建一个 namedList:
n <- new("namedList", list(a=1, b=2))
n
# An object of class “namedList”
# $`a`
# [1] 1
#
# $b
# [1] 2
isS4(n)
# [1] TRUE
R 有两个不太常用的 class:"Dlist" 和 "namedList"。
关于第一个,它是关于 Sys.getenv()
提到的,它 returns 是 class "Dlist" 的结果,如果它的参数丢失,为了漂亮的打印. class 实际上有一个 print.Dlist
方法。还有一个明显相关的 formatDL
函数来格式化描述列表。但是我不知道如何创建 class "Dlist" 的对象。
关于"namedList",手册是这么定义的:
the alternative to "list" that preserves the names attribute
在这种情况下,我无法创建这种类型的对象,而且我还没有找到任何使用它的实例。
如何创建 "Dlist" 或 "namedList"?
您能否提供一个示例,其中 "namedList" 比普通的 命名列表 更方便? (旨在作为列表 L
,其中 names(L)
不是 NULL
)
A Dlist
是 R 的 Base 包中定义的非正式 class,其存在的唯一目的是漂亮地打印一个命名的字符向量。它根本不是一个列表,而是一种字符向量:
a <- Sys.getenv()
class(a)
# [1] "Dlist"
typeof(a)
# [1] "character"
您只需将 Dlist
写入命名字符向量的 class 属性即可创建:
hello_world <- c(Hello = "World", Hi = "Earth", Greetings = "planet");
class(hello_world) <- "Dlist"
hello_world
# Hello World
# Hi Earth
# Greetings planet
您可以 select 格式化选项 formatDL
:
cat(formatDL(hello_world, style = "list", width = 20), sep = "\n")
# Hello: World
# Hi: Earth
# Greetings: planet
Dlist 仅在 base R 中用于将环境变量打印到控制台。除非您想以这种方式打印命名的字符向量,否则您不需要 Dlist。
另一方面,namedList 是 methods
包中定义的正式 S4 对象(也在 R 中预加载)。它从 list
继承了它的属性并定义了一个方法——它自己的通用 S4 show
版本。
您可以将它用作基础 class,从中创建继承命名列表属性的新 S4 classes(即具有 names
属性的普通列表),尽管它不是清楚为什么一个用户足够先进来创建 S4 classes 不会自己做。它被定义为 here.
您可以使用 new
创建一个 namedList:
n <- new("namedList", list(a=1, b=2))
n
# An object of class “namedList”
# $`a`
# [1] 1
#
# $b
# [1] 2
isS4(n)
# [1] TRUE