A Dlist
- это неформальный класс, определенный в базовом пакете R, который существует с единственной целью красивой печати именованного вектора символов. Это вообще не список, а тип вектора символов:
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
и определяет один метод - свою собственную версию generi c S4 show
. Вы можете использовать его как базовый класс, из которого можно создавать новые классы S4, которые наследуют свойства именованного списка (то есть обычного списка с атрибутом names
), хотя не ясно, почему пользователь достаточно продвинулся, чтобы создавать классы S4. не делайте этого сами. Здесь определено .
Вы можете создать namedList с помощью 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