當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


R className 類名包含對應的包

R語言 className 位於 methods 包(package)。

說明

函數 className() 生成對類的有效引用,包括包含類定義的包的名稱。從類 "className" 返回的對象是引用類的明確方式,例如在調用 setMethod 時,以防存在該類的多個定義。

函數 "multipleClasses" 返回有關來自不同包的同名類的多個定義的信息。

用法


className(class, package)

multipleClasses(details = FALSE)

參數

class, package

類的字符串名稱,以及它所屬的包的字符串名稱(可選)。如果參數 package 丟失,並且 class 參數有一個包槽,則使用該包槽(特別是,從類 "className" 傳入一個對象,在這種情況下返回自身,但如果第二個參數是,則更改包槽提供)。

如果沒有包參數或槽,則該類的定義必須存在並將用於定義包。如果有多個定義,則會選擇一個定義並打印一條警告,給出其他可能性。

details

如果 FALSE (默認值),multipleClasses() 返回當前已知且具有多個定義的那些類的字符向量。

如果是 TRUE ,則返回這些類定義的命名列表。列表的每個元素本身就是相應類定義的列表,包名稱作為列表的名稱。請注意,相同的類定義不會被視為 “multiple” 定義(請參閱下麵詳細信息的討論)。

細節

內部使用的類定義表可以維護具有相同名稱但來自不同包的類的多個定義。如果遇到相同的類定義,則隻保留一個類定義;這種情況最常見於在 setOldClass 調用中指定的 S3 類。對於真正的類,如果兩個包碰巧獨立地使用相同的名稱,則通常不可避免地會出現多個類定義。

故意覆蓋另一個同名包中的類定義通常是一個壞主意。雖然R嘗試保留並使用這兩個定義(從版本 2.14.0 開始),總是可能出現歧義。更明智的做法是定義一個擴展現有類但具有不同名稱的新類。

className() 的調用返回類 "className" 中的對象。

multipleClasses() 的調用返回字符向量或類定義的命名列表。無論哪種情況,測試返回值的長度是否大於 0 都是檢查是否存在多重定義的類。

類中的對象

"className" 擴展了 "character" 並具有一個槽 "package" ,也是類 "character"

例子

## Not run: 
className("vector") # will be found, from package "methods"
className("vector", "magic") # OK, even though the class doesn't exist


className("An unknown class") # Will cause an error

## End(Not run)

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Class names including the corresponding package。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。