Phiên bản ngắn:
Sử dụng inherits
, nhưng hãy cẩn thận với số và lớp S4. phiên bản
dài:
Từ phần See Also của trang is
giúp đỡ:
kế thừa gần như luôn luôn tương đương với là, cả hai cho S4 và phi S4 đối tượng, và là hơi nhanh hơn. Không tương đương áp dụng cho các lớp học có các lớp siêu có điều kiện, với một thử nghiệm không tầm thường = trong mối quan hệ (không phổ biến và không khuyến khích): đối với các thử nghiệm này là mối quan hệ nhưng kế thừa theo định nghĩa bỏ qua điều kiện thừa kế có điều kiện cho S4 các đối tượng.
Từ phần Lớp học chính thức của trang inherits
giúp đỡ:
Các chất tương tự của kế thừa cho các lớp học chính thức là được. Hai hàm hoạt động nhất quán với một ngoại lệ: các lớp S4 có thể có thừa kế có điều kiện , với một thử nghiệm rõ ràng. Trong trường hợp này, sẽ là kiểm tra điều kiện, nhưng thừa hưởng bỏ qua tất cả các lớp siêu hạng có điều kiện.
Vì vậy, chúng chủ yếu trả về cùng một điều, nhưng inherits
nhanh hơn, do đó, nó phải là lựa chọn mặc định trong hầu hết các trường hợp. (Như đã đề cập bởi Konrad, is
cũng yêu cầu các gói methods
được nạp, có thể làm cho nó không phù hợp với mục đích sử dụng nhạy cảm thực hiện Rscript
.)
Các giá trị có thể khác nhau nếu bạn đang sử dụng các lớp học với thừa kế có điều kiện S4, nhưng đây là not recommended (xem phần "Phương pháp lựa chọn và công văn: Chi tiết"), điều đó có nghĩa là hy vọng là hiếm.
Nơi rõ ràng nhất khi hai hàm khác nhau là khi kiểm tra xem số nguyên có phải là số hay không.
class(1L)
## [1] "integer"
is.numeric(1L)
## [1] TRUE
is(1L, "numeric")
## [1] TRUE
inherits(1L, "numeric")
## [1] FALSE
Nguồn
2015-01-13 13:31:12
Bạn chắc chắn bạn không muốn thẻ 'r-faq' trên thẻ này? –