让人不解的访问访问的对象的“伪缝隙”列表的元素。包含与名称的列表子类S4类:按名称
这是成功使用2出4接近于一个可以试试:
setClass("TempA", contains="list")
A = new("TempA", list(a=1,b=2))
A
只是打印不显示列表的名称。
## An object of class "TempA"
## [[1]]
## [1] 1
##
## [[2]]
## [1] 2
不过,您可以按名称提取元素。
A[["b"]]
## [1] 2
而names()提取名称。
names(A)
## [1] "a" "b"
但是在伪槽中没有名字。
[email protected]
## [[1]]
## [1] 1
##
## [[2]]
## [1] 2
那么名称隐藏在哪里,如果不是在伪槽本身?
情节复杂。我的目标是子类化(添加一些插槽;这里没有显示)。 但是,如果我们继承,即使上述两个成功的方法现在失败。名单的名字显然没有。
setClass("TempB", contains="TempA")
B = new("TempB", list(a=1,b=2))
names(B) ## no names.
## NULL
B[["b"]] ## NULL
## NULL
下面是一种不同的方法。这是否做到了?不。
B2 = new("TempB", new("TempA", list(a=1,b=2)))
B2[["a"]] # NULL
## NULL
names(B2) # NULL
## NULL
names(as(B2, "TempA")) ## still no dice
## NULL
总之,当伪缝隙是命名列表,试图查看或使用这些名称是成功的只有2个4显而易见的方法,子类后零出4。解决这个问题不是问题;这很容易。 (尽管我想知道如何使用名称为TempB对象编写访问器),我只是想了解。