讓人不解的訪問訪問的對象的「僞縫隙」列表的元素。包含與名稱的列表子類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對象編寫訪問器),我只是想了解。