my.data.frame <- subset(data , V1 > 2 | V2 < 4)
Một giải pháp thay thế bắt chước hành vi của chức năng này và sẽ phù hợp hơn để đưa vào trong một cơ thể chức năng:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
Một số người chỉ trích việc sử dụng which
là không cần thiết, nhưng nó ngăn chặn các NA
giá trị ném lại kết quả không mong muốn. Tương đương (.ie không trả về các hàng NA cho bất kỳ NA nào trong V1 hoặc V2) cho hai tùy chọn được trình bày ở trên mà không which
có:
new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
Lưu ý: Tôi muốn cảm ơn người đóng góp ẩn danh đã cố gắng sửa lỗi trong mã ngay lập tức ở trên, một bản sửa lỗi đã bị người kiểm duyệt từ chối. Thực sự có một lỗi bổ sung mà tôi nhận thấy khi tôi sửa lỗi đầu tiên. Mệnh đề có điều kiện kiểm tra các giá trị NA cần phải là đầu tiên nếu nó được xử lý như tôi dự định, vì ...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
Thứ tự các đối số có thể quan trọng khi sử dụng '& ".