Tôi muốn đặt điều kiện dừng bên trong một hàm. Điều kiện là nếu các yếu tố đầu tiên và thứ hai phải khớp hoàn toàn theo thứ tự và chiều dài.So sánh hai vectơ trong câu lệnh if
A <- c("A", "B", "C", "D")
B <- A
C <- c("A", "C", "C", "E")
> A == B
[1] TRUE TRUE TRUE TRUE
Đây là tình hình tốt để đi về phía trước
> A == C
[1] TRUE FALSE TRUE FALSE
Kể từ khi có một sai tình trạng này phải dừng lại và đầu ra rằng tình trạng này doesnot giữ ở mức 2 và 4 cột thứ.
if (A != B) {
stop("error the A and B does not match at column 2 and 4"} else {
cat ("I am fine")
}
Warning message:
In if (A != B) (stop("error 1")) :
the condition has length > 1 and only the first element will be used
Tôi có thiếu thứ gì đó hiển nhiên không? Ngoài ra tôi có thể xuất ra vị trí lỗi ở đâu?
Thận trọng về tái chế là lý do tại sao bạn nên sử dụng' isTRUE (all.equal (D, E)) '. –
Nhìn vào mã cho 'all.equal.character' đã khai sáng cho tôi. Bởi vì khía cạnh "gần như bình đẳng" của nó cho phao nổi, tôi cho rằng nó đã làm điều gì đó buồn cười cho những thứ khác nữa. Tôi không chắc chắn, nhìn lại. Nhưng điều duy nhất có lẽ không mong muốn nó làm là kiểm tra sự bình đẳng của tất cả các thuộc tính, bao gồm cả tên. Nó cũng cần phải cẩn thận hơn với 'NA' hơn là mã đơn giản của tôi ở trên. – Aaron