2017-02-01 39 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我更新了我的答案。 –

相关问题