Jak uzyskać dowolny obiekt R, jak uzyskać wszystkie metody powiązane z obiektem?Metody obiektowe R
Odpowiedz
Najbliższym, o czym mogę pomyśleć, jest methods
(jeśli obiekt/funkcja S3, List all available methods for an S3 generic function, or all methods for a class.
) lub showMethods
(jeśli S4).
np .:
> 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
Albo dla funkcji:
> 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
mogą również okazać się przydatny do odczytu.
Klasa obiektu R jest odzyskiwana z class
. Obiekty nie mają powiązanych z nimi metod w typowym języku R. Klasa obiektu określa, jakie funkcje-metody zostaną do niego zastosowane. Aby ustalić, jakie funkcje mają metody powiązane z daną klasą, należy przetestować wszystkie dostępne funkcje, aby sprawdzić, czy istnieje metoda specyficzna dla klasy. Nawet wtedy funkcje generyczne próbowałyby użyć metody "domyślnej" w większości przypadków.
Niektóre metody związane z ogólną funkcją S3 są wyświetlane z methods
. Metody funkcji S4 są odzyskiwane za pomocą showMethods
. Tak więc, dla większości ludzi, którzy nazywają to "obiektami", twoje pytanie nie ma sensu, ale jeśli zdarzyło się, że włączasz funkcje pod ogólnym terminem "przedmioty" (co jest technicznie sprawiedliwe), odpowiedziałem.
showMethods(classes="data.frame")
methods(class="data.frame")
Wtedy to grupa metod, które można nazwać „ukryte”, choć ich nazwa R „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
I nawet wtedy nie mają naprawdę wyświetlać członków Math lub rodzina Ops, ale widziałbyś je na stronie pomocy dla? groupGeneric. Nie widzisz Ops.numeric. Nieco niższy poziom widoku zapewnia:
.Primitive("+")
# function (e1, e2) .Primitive("+")
Spowoduje to zgłoszenie błędu, jeśli zostanie podany niewłaściwy argument.
Niektóre pakiety definiują funkcje, które nie są metodami, ale mimo to są przeznaczone do użytku z określoną klasą. Na przykład biblioteka (igraph) definiuje funkcję radius(_)
, która jest przeznaczona do użytku na obiektach klasy igraph
. Ponieważ takie funkcje nie są metodami, nie będą ich ujawniać. W takich przypadkach bardzo pomocne może być lsf.str(_)
. Np
lsf.str("package:igraph")
zawiera linię:
radius : function (graph, mode = c("all", "out", "in", "total"))
- 1. print_r aby uzyskać metody obiektowe w PHP?
- 2. C++ 0x obiektowe wnioskowanie obiektowe obiektu
- 3. Czy literały obiektowe są Pythoniczne?
- 4. Podejście obiektowe z AngularJS
- 5. Wykonuj falsy obiektowe
- 6. obiektowe JavaScript z przykładu
- 7. Programowanie obiektowe z Androidem
- 8. Node.js przestarzałe klucze obiektowe
- 9. obiektowe pytanie projektowe dla aplikacji GUI
- 10. Mapowanie obiektowe a warstwa abstrakcji bazy danych
- 11. czy można dodawać metody w locie do zajęć matlab (programowanie obiektowe)?
- 12. Czym różnią się graficzne bazy danych i obiektowe bazy danych?
- 13. Django Rest obiektowe uprawnienia na poziomie obiektu POST
- 14. Czy programowanie obiektowe w językach interpretowanych (tj. PHP) jest wydajne?
- 15. Jak włączyć nowe znaki obiektowe Objective-C na iOS?
- 16. R dplyr oznacza wioskę lub min i inne metody?
- 17. R - „nie wyświetlać na liście” metody liście niestandardowych klas
- 18. Szyderstwo przeciążonej metody
- 19. Wywołanie metody asynchronicznej w IEnumerable.Select
- 20. Wyświetl źródło pakietu R
- 21. Funkcja obrazu R w R
- 22. Polecenie Cofnij w R
- 23. Metody klas a metody instancji
- 24. Metody LINQ to metody rozszerzeń?
- 25. Używanie w linii kodu r jako część nagłówka R R
- 26. Subskrybowanie metody PropertyChanged lub metody wywołania metody setter?
- 27. Dlaczego metody obiektów ES5 nie zostały dodane do Object.prototype?
- 28. Metody podnoszenia wartości funkcji w Scali
- 29. R leniwy paradoks oceny (błąd R?)
- 30. Refaktoryzacja kodu R za pomocą ESS/R
W R metod związanych z funkcjami, a nie obiektów. Im szybciej zdasz sobie sprawę, że wcześniej systemy OO R zaczną mieć sens. – hadley
Jeśli wyszukasz w Google "metody r", pierwsze dwa trafienia prowadzą do odpowiednich plików stron pomocy. : P –
@hadley, ale czy nie wszystkie obiekty funkcji? –