Dado un objeto R arbitrario, ¿cómo puedo obtener todos los métodos asociados con el objeto?Obtener métodos Objeto R
Respuesta
Lo más cercano que puedo pensar es methods
(si es objeto/función S3, List all available methods for an S3 generic function, or all methods for a class.
), o showMethods
(si S4).
ej .:
> A <- matrix(runif(10))
> B <- methods(class=class(A))
> B
[1] anyDuplicated.matrix as.data.frame.matrix as.raster.matrix*
[4] boxplot.matrix determinant.matrix duplicated.matrix
[7] edit.matrix* head.matrix isSymmetric.matrix
[10] relist.matrix* subset.matrix summary.matrix
[13] tail.matrix unique.matrix
Non-visible functions are asterisked
> attr(B,'info')
visible from
anyDuplicated.matrix TRUE package:base
as.data.frame.matrix TRUE package:base
as.raster.matrix FALSE registered S3method
boxplot.matrix TRUE package:graphics
determinant.matrix TRUE package:base
duplicated.matrix TRUE package:base
edit.matrix FALSE registered S3method
head.matrix TRUE package:utils
isSymmetric.matrix TRUE package:base
relist.matrix FALSE registered S3method
subset.matrix TRUE package:base
summary.matrix TRUE package:base
tail.matrix TRUE package:utils
unique.matrix TRUE package:base
O para una función:
> methods(summary)
[1] summary.aov summary.aovlist summary.aspell*
[4] summary.connection summary.data.frame summary.Date
[7] summary.default summary.ecdf* summary.factor
[10] summary.glm summary.infl summary.lm
[13] summary.loess* summary.manova summary.matrix
[16] summary.mlm summary.nls* summary.packageStatus*
[19] summary.PDF_Dictionary* summary.PDF_Stream* summary.POSIXct
[22] summary.POSIXlt summary.ppr* summary.prcomp*
[25] summary.princomp* summary.srcfile summary.srcref
[28] summary.stepfun summary.stl* summary.table
[31] summary.tukeysmooth*
Non-visible functions are asterisked
?Methods
también pueden resultar una lectura útil.
La clase de un objeto R se recupera con class
. Los objetos no tienen métodos asociados con ellos en el típico lenguaje de R. La clase de un objeto determina qué función-métodos se le aplicarán. Para determinar qué funciones tienen los métodos asociados con una clase determinada, debería probar todas las funciones disponibles para ver si había un método específico de la clase. Incluso entonces las funciones genéricas intentarían usar un método "predeterminado" en la mayoría de los casos.
Algunos métodos asociados con una función genérica S3 se muestran con methods
. Los métodos de una función S4 se recuperan con showMethods
. Entonces, para lo que la mayoría de la gente llamaría "objetos", su pregunta no tiene sentido, pero si sucediera que estaba incluyendo funciones bajo el término general "objetos" (que es técnicamente justo), entonces he respondido.
showMethods(classes="data.frame")
methods(class="data.frame")
Luego hay un grupo de métodos que podría llamarse "implícita", aunque su nombre R es "groupGeneric"
?groupGeneric
methods("Math") # These are "add-on" methods to the primitive Math functions
[1] Math.data.frame Math.Date Math.dates* Math.difftime Math.factor
[6] Math.mChoice Math.polynomial* Math.POSIXt Math.ratetable* Math.Surv*
[11] Math.times*
Non-visible functions are asterisked
?"+"
methods("Ops") # The binary operators such as "+", "-", "/"
[1] Ops.data.frame Ops.Date Ops.dates* Ops.difftime Ops.factor
[6] Ops.findFn Ops.mChoice Ops.numeric_version Ops.ordered Ops.polynomial*
[11] Ops.POSIXt Ops.raster* Ops.ratetable* Ops.Surv* Ops.times*
[16] Ops.ts* Ops.unit* Ops.yearmon* Ops.yearqtr* Ops.zoo*
Non-visible functions are asterisked
E incluso entonces no has realmente mostrar los miembros de la matemáticas o la familia Ops, pero los hubieras visto en la página de ayuda de? groupGeneric. No ves Ops.numeric. Una vista de nivel algo inferior es proporcionada por:
.Primitive("+")
# function (e1, e2) .Primitive("+")
Esto arrojará un error si se ofrece el argumento de clase incorrecto.
Algunos paquetes definen funciones que no son métodos pero que, no obstante, están pensadas para su uso con una clase particular. Por ejemplo, library (igraph) define la función radius(_)
, que está diseñada para su uso en objetos de la clase igraph
. Dado que tales funciones no son métodos, methods(_)
y showMethods(_)
no las revelará.
En tales casos, lsf.str(_)
puede ser muy útil. Por ejemplo:
lsf.str("package:igraph")
incluye la línea:
radius : function (graph, mode = c("all", "out", "in", "total"))
- 1. R - Obtener formales del objeto de llamada
- 2. obtener métodos de un objeto en Ruby
- 3. Obtener todos los métodos de instancia de un objeto CoffeeScript
- 4. Identificación de objeto R
- 5. Identidad del objeto R
- 6. ¿Qué significa "métodos S3" en R?
- 7. R página de ayuda como objeto
- 8. Encontrar qué métodos tiene un objeto Python
- 9. Obtener Métodos: Uno vs Muchos
- 10. Javascript: Llamar a métodos de objeto dentro de ese objeto
- 11. captura última salida como un objeto R
- 12. Agregar tiempo al objeto POSIXct en R
- 13. ¿Cómo agregar nuevos métodos al objeto jQuery?
- 14. dos métodos sincronizados diferentes del mismo objeto?
- 15. C# Métodos de extensión - devolver llamada objeto
- 16. JavaScript - Obtener llamando objeto
- 17. En R, ¿cómo obtener el nombre de un objeto después de enviarlo a una función?
- 18. Dado un objeto javascript arbitrario, ¿cómo puedo encontrar sus métodos?
- 19. PHP: obtener todos los nombres de los métodos de un objeto con el nombre "bla_"
- 20. ¿Cómo obtener una lista completa de los métodos y atributos del objeto?
- 21. Fuentes sobre objetos S4, métodos y programación en R
- 22. Acerca de obtener un nuevo objeto NSManagedObject
- 23. primavera de datos - objeto de dominio herencia y métodos genéricos
- 24. ¿Cómo obtener un archivo .csv en R?
- 25. Cómo obtener una fila de R data.frame
- 26. Obteniendo una referencia al objeto creado por JOptionPane métodos estáticos
- 27. C Variables privadas Obtener y establecer métodos
- 28. Cómo obtener métodos en un tipo
- 29. Obtener métodos de clase utilizando la reflexión
- 30. R Advertencia de comprobación de CMD: Funciones/métodos con uso en el objeto de documentación ... pero no en el código
En R, los métodos están asociados con funciones, no objetos. Cuanto antes se dé cuenta, más pronto comenzarán a tener sentido los sistemas OO de R. – hadley
Si busca "buscar métodos r", los primeros dos hits lo llevan a los archivos de la página de ayuda apropiada. : P –
@hadley pero no son todos los objetos de funciones? –