2013-04-22 1 views
4

Я в основном ищу противоположность methods(some_function), которая возвращает все методы класса, которые существуют для этой функции. Есть ли простой способ поиска всех функций с явным method для данного класса объектов?
Например, methods(my_func) возвращает кучу myfunc.classname значений. Есть ли functions(my_class), который будет возвращать все функции с помощью метода func.my_class?Как найти все функции с методами для данного класса

ответ

7

Я думаю, вы хотите указать аргумент class и ничего не generic.function в methods. Сравнить

methods(as.matrix) 
[1] as.matrix.data.frame    as.matrix.data.table*    as.matrix.default     
[4] as.matrix.dist*     as.matrix.noquote     as.matrix.POSIXlt     
[7] as.matrix.raster*     as.matrix.SpatialGridDataFrame* as.matrix.SpatialPixelsDataFrame* 

С этим, возвращающий методы для общего класса

methods(class="matrix") 
[1] anyDuplicated.matrix as.data.frame.matrix as.data.table.matrix* as.raster.matrix*  boxplot.matrix  corresp.matrix*  
[7] determinant.matrix duplicated.matrix  edit.matrix*   head.matrix   isSymmetric.matrix lda.matrix*   
[13] qda.matrix*   relist.matrix*  subset.matrix   summary.matrix  tail.matrix   unique.matrix   

    Non-visible functions are asterisked 

И это также, кажется, работает для классов S4, а также, например,

methods(class="data.table") 
[1] $<-.data.table*   [.data.table*    [<-.data.table*   all.equal.data.table*  as.data.frame.data.table* 
[6] as.data.table.data.table* as.list.data.table*  as.matrix.data.table*  dim.data.table*   dimnames.data.table*  
[11] dimnames<-.data.table* duplicated.data.table* format.data.table*  head.data.table*   is.na.data.table*   
[16] merge.data.table*   na.omit.data.table*  names<-.data.table*  Ops.data.table*   print.data.table*   
[21] subset.data.table*  tail.data.table*   transform.data.table*  unique.data.table*  within.data.table* 
+0

Спасибо. Это делает работу. –

+1

Теперь это печально: через год я совершенно забыл, что спросил об этом. Благодарим за инструменты поиска SO :-) –

0

Я думаю, что вы описываете концепцию самоанализа и отражения (хорошо известную на Java).

сообщение о самоанализе и рефлексии в Java со ссылками здесь: Java introspection and reflection

я не знаю, какие технологии или язык вы используете, но, возможно, вы найдете эквивалент.

Надеюсь, это поможет! До свидания !

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