2017-02-01 43 views
0
setClass('A') 
setClass('B', contains='A') 
setClass('C') 
setClass('D', contains=c('C','B')) 
ls() 

從某種意義上說,我已經「創造」了四個「事物」,但是因爲我還沒有實例化任何這些類,所以我看不到它們中的任何一個。有沒有辦法讓`ls()`我創建的所有'S4`類都可以?

有沒有辦法看到可用的類?也許env其中S4目前定義的類存儲?

回答

2

類定義被存儲在由前面.__C__變量,所以

> grep(".__C__", ls(all=TRUE), value=TRUE) 
[1] ".__C__A" ".__C__B" ".__C__C" ".__C__D" 

對於在包中定義的類,看在包名稱空間中,例如,

> library(quantmod) 
> symbols <- ls("package:quantmod", all=TRUE) 
> grep(".__C__", symbols, value=TRUE) 
[1] ".__C__chob"   ".__C__chobTA"   ".__C__quantmod"  
[4] ".__C__quantmodReturn" ".__C__tradeLog"  
+0

謝謝!哈德利沒有開玩笑,你是'S4'答案:)高手現在 – isomorphismes

+0

我發現,如果我'需要(quantmod)'(使用S4),然後'LS(全部= TRUE)'不會導入他們的S4對象如'chob'。有什麼不同? – isomorphismes

+1

@isomorphismes我更新了我的答案。 –

相關問題