Cho đối tượng R tùy ý, làm thế nào tôi có thể nhận được tất cả các phương thức liên kết với đối tượng?Nhận các phương thức đối tượng R
Trả lời
Gần nhất tôi có thể nghĩ là methods
(nếu đối tượng/chức năng S3, List all available methods for an S3 generic function, or all methods for a class.
) hoặc showMethods
(nếu S4).
ví dụ .:
> 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
Hoặc cho một chức năng:
> 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
cũng có thể chứng minh một đọc hữu ích.
Lớp của đối tượng R được khôi phục bằng class
. Các đối tượng không có các phương thức liên kết với chúng theo cách nói R điển hình. Lớp của một đối tượng xác định những hàm-phương thức nào sẽ được áp dụng cho nó. Để xác định những hàm nào có các phương thức liên kết với một lớp đã cho, bạn sẽ cần phải kiểm tra tất cả các hàm sẵn có để xem liệu có một phương thức cụ thể theo lớp hay không. Thậm chí sau đó các hàm chung sẽ cố gắng sử dụng một phương thức "mặc định" trong hầu hết các trường hợp.
Một số phương pháp được liên kết với hàm S3 chung được hiển thị với methods
. Các phương thức của hàm S4 được phục hồi với showMethods
. Vì vậy, đối với những gì hầu hết mọi người sẽ gọi là "đối tượng", câu hỏi của bạn không có ý nghĩa, nhưng nếu nó xảy ra mà bạn đã bao gồm các chức năng theo thuật ngữ chung "đối tượng" (đó là công bằng về mặt kỹ thuật) thì tôi đã trả lời.
showMethods(classes="data.frame")
methods(class="data.frame")
Sau đó, có một nhóm các phương pháp có thể được gọi là "tiềm ẩn" mặc dù tên R của họ là "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
Và thậm chí sau đó bạn đã không thực sự hiển thị các thành viên của Math hay gia đình Ops, nhưng bạn sẽ thấy chúng ở trang trợ giúp cho? groupGeneric. Bạn không thấy Ops.numeric. Chế độ xem cấp thấp hơn được cung cấp bởi:
.Primitive("+")
# function (e1, e2) .Primitive("+")
Điều này sẽ gây ra lỗi nếu đưa ra đối số lớp sai.
Một số gói xác định các hàm không phải là phương thức nhưng vẫn được sử dụng cho một lớp cụ thể. Ví dụ, thư viện (igraph) định nghĩa hàm radius(_)
, được thiết kế để sử dụng trên các đối tượng trong lớp igraph
. Vì các hàm như vậy không phải là phương thức, methods(_)
và showMethods(_)
sẽ không hiển thị chúng.
Trong những trường hợp như vậy, lsf.str(_)
có thể rất hữu ích. Ví dụ:
lsf.str("package:igraph")
bao gồm các dòng:
radius : function (graph, mode = c("all", "out", "in", "total"))
- 1. Nhận dạng đối tượng R
- 2. .NET Remoting, chuyển các đối tượng vào các phương thức
- 3. Trong Scala, kết hợp các phương thức đối tượng như các phương thức lớp
- 4. Nhận kiểu đối số theo phương thức
- 5. Phương thức chuyển đối tượng vào mảng_map()
- 6. Làm cách nào để đơn vị kiểm tra các phương thức trong đối tượng phương thức?
- 7. Ghi đè phương thức với đối tượng
- 8. Loại không bắt buộcLỗi: Đối tượng [đối tượng đối tượng] không có phương thức 'hộp thoại'
- 9. Mockito - Đặt một phương thức của đối tượng được trả về bằng phương thức đối tượng giả
- 10. Ruby to_json: các đối số phương thức
- 11. Đối tượng không có phương thức 'thay thế'
- 12. Django, phương thức get_absolute_url cho đối tượng tệp
- 13. Đối tượng # <Object> không có phương thức '_renderItemData'
- 14. Phương thức khởi tạo phương thức trong các lớp tham chiếu R
- 15. JQuery, gửi đối tượng JSON bằng phương thức GET
- 16. Lấy đối tượng $ scope trong phương thức run() của Angular
- 17. Biến các chuỗi JSON thành các đối tượng bằng các phương thức
- 18. Sử dụng đối tượng phần tử với phương thức jQuery?
- 19. Xây dựng một phương thức xây dựng đối tượng tĩnh so với phương thức mở rộng
- 20. Gọi một phương thức trên một đối tượng
- 21. Tạo đối tượng: Constructors hoặc phương thức nhà máy tĩnh
- 22. Loại không bắt buộcLỗi: Đối tượng [đối tượng] không có phương thức 'tự động hoàn thành'
- 23. copy.deepcopy đặt TypeError vào đối tượng với phương thức __new __()
- 24. Cách sử dụng map() để gọi các phương thức lớp trên danh sách các đối tượng
- 25. Phương thức setHequestHeader của đối tượng javascript không hoạt động
- 26. Làm cách nào để ghi đè phương thức __call__ của đối tượng phương thức bằng Python?
- 27. Phương thức __init __() của đối tượng làm gì trong python?
- 28. Cách gọi phương thức siêu đối tượng Oracle PL/SQL
- 29. Giao thức đối tượng-C tĩnh phương pháp?
- 30. Thêm phương thức vào một đối tượng được sao chép
Trong R, phương pháp có liên quan đến chức năng, không phải đối tượng. Bạn càng sớm nhận ra rằng các hệ thống OO của R sớm hơn sẽ bắt đầu có ý nghĩa. – hadley
Nếu bạn google "tìm phương thức r", hai lần truy cập đầu tiên đưa bạn đến các tệp trang trợ giúp thích hợp. : P –
@hadley nhưng không phải là tất cả các đối tượng chức năng? –