6
函數names
:這是R中的一個原始函數。對於原始函數,創建隱式S4泛型,因此可以爲該函數構造S4方法。爲函數原型隱式S4泛型添加額外參數
以定義的S4類,如下所示:
setClass("aClass",
representation=list(
values = "character",
id = "numeric"
),
prototype=list(
values = character(0),
id = numeric(0)),
validity=function(object){
length([email protected])==length([email protected])
}
)
現在我想創建一個函數來提取的名字,無論是有序還是無序。我想用names
這個功能來做到這一點,以避免必須製作一個新功能getNames()
或其他的東西,因爲這不太直觀。
下面給出了需要做的事情的想法:
setMethod("names",signature="aClass",
function(x,ordered=TRUE){
if(ordered)
[email protected][[email protected]]
else
[email protected]
}
這是行不通的,因爲names
是一種原始的功能和ordered
是不是隱含通用的參數。
我怎樣才能使這項工作在下列條件下:
- 的
names
功能應保持其原有的行爲所有其他對象,包括來自其他包的對象。 - 該代碼應該可以接受用於包裝
- 該代碼應該可以被例如Bioconductor設置的高標準接受。
感謝您的回答,但這就是我在我的問題中所說的:我不能使用額外的參數。數字指數是針對有序名稱和一組其他插槽(實際對象要複雜得多,並不是所有插槽都可以排序)。我使用一個額外的插槽來指示對象是否已被命令。我有很長的路要「排序」命令的名字。但我希望找到一種方法來避免黑客入侵。軟件包全局變量是我甚至不認爲有效選項的破解類型。 :) –
是的,從你的問題看來,你似乎知道答案是否定的,但既然你問了這個問題,我回答了;) –
我希望有一些解決辦法我沒有意識到,但是我害怕,我不得不以「不」的方式解決:)我再給它幾天,然後你有你的接受答案。 –