2017-02-01 1 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

Теперь я замечаю, что если я' require (quantmod) '(который использует S4), то' ls (all = TRUE) 'не импортирует свои объекты S4 таких как 'chob'. Какая разница? – isomorphismes

+1

@isomorphismes Я обновил свой ответ. –

Смежные вопросы