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


R findClass 查找類定義


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

說明

查找類的函數:isClass 測試類; findClass 返回包含該類的包的名稱; getClasses 返回環境中所有類的名稱,通常是命名空間。要檢查類的定義,請使用 getClass

用法

isClass(Class, formal=TRUE, where)

getClasses(where, inherits = missing(where))

findClass(Class, where, unique = "")

## The remaining functions are retained for compatibility
## but not generally recommended

removeClass(Class, where)

resetClass(Class, classDef, where)

sealClass(Class, where)

參數

Class

類的字符串名稱。這些函數通常采用類定義而不是字符串。要將類限製為特定包中定義的類,請設置字符串的packageSlot

where

environment,在其中搜索類定義。默認為調用函數的頂級環境。當從命令行調用時,這會產生使用搜索列表中的所有包環境的效果。

要將搜索限製為特定包中的類,請使用 where = asNamespace(pkg)pkg 包名稱;要將其限製為導出的類,請在包附加到搜索列表後使用where = "package:pkg"

formal

logical 是否需要正式定義?對於 S 兼容性,始終視為 TRUE

unique

如果 findClass 需要類的唯一位置,則 unique 是解釋搜索目的的字符串(並用於警告和錯誤消息)。默認情況下,可以有多個位置,並且該函數始終返回一個列表。

inherits

在調用 getClasses 時,返回的值應該包括 where 的所有父環境,還是僅包含該環境?如果省略where,則默認為TRUE,否則默認為FALSE

classDef

對於 resetClass ,可選的類定義。

職能

isClass

這是正式定義的類的名稱嗎?

getClasses

where 上正式定義的所有類的名稱。如果不帶參數調用,則從調用函數可見的所有類(如果從頂層調用,則為搜索列表上任何環境中的所有類)。 where 參數用於僅在特定包中搜索。

findClass

類定義所在的環境列表Class被發現。如果where提供後,仍然返回一個列表,或者是空的,或者包含對應於的環境where。默認情況下,當從R會話、全局環境和所有當前附加的包都會被搜索。

如果 unique 作為字符串提供,如果有多個可見定義(使用字符串來標識調用目的),findClass 將發出警告,如果找不到定義,將生成錯誤。

保留其餘函數是為了向後兼容和內部使用,但通常不推薦。

removeClass

刪除該類的定義。如果該類位於另一個包中,則不能使用此方法,並且在定義包中的類的源代碼中很少需要此方法。

resetClass

重置類的內部定義。對於不在這個包中的類定義來說是不合法的,否則很少需要。

sealClass

通過在類定義中設置相應的槽來密封指定類的當前定義,以防止進一步更改。這很少使用,因為加載的包中的類是通過鎖定其名稱空間來密封的。

參考

Chambers, John M. (2016) Extending R, Chapman & Hall. (Chapters 9 and 10.)

Chambers, John M. (2008) Software for Data Analysis: Programming with R Springer. (Chapter 9 has some details not in the later reference.)

也可以看看

getClass , Classes_Details , Methods_Details , makeClassRepresentation

相關用法


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