Bạn có nên sử dụng các chức năng kiểm tra tiền tố/postcondition của RUnit để thực hiện các điều kiện tiên quyết/báo cáo sau điều kiện hoặc thực hiện điều này với một số tính chính xác trong hoạt động hay không?Làm thế nào để xác nhận trong R?
10
A
Trả lời
4
Tôi biết đây là một bài đăng cũ, nhưng có lẽ câu trả lời này sẽ hữu ích cho những người khác đang tìm kiếm các xác nhận R trong biểu mẫu toán tử. Đây có thể là một bước đi đúng hướng nếu bạn muốn tack một khẳng định vào cuối của một tuyên bố phiền hà.
"%assert%" <- function(e1, e2)
{
args <- as.list(match.call()[-1])
defs <- as.list(args$e1)
preds <- as.list(args$e2)[-1L]
for(var in names(defs)[names(defs) != ""]) assign(var, eval(defs[[var]]))
for(p in unlist(preds)) eval(
parse(
text = paste0("if(!", deparse(p), ") stop('assertion ",deparse(p) , " is not true')")
)
)
return(eval(args$e1))
}
Ví dụ: nếu bạn đang tính toán giá trị trung bình của một vector x và bạn muốn chắc chắn rằng mỗi phần tử là từ một đến mười, bạn có thể sử dụng
mean(x = sample(1:10, size = 100, replace = T)) %assert% c(min(x) > 0 && max(x) < 11)
#5.62
Nếu tình trạng này isn' Đúng, bạn sẽ nhận được một lỗi thông tin (ish) như
mean(x = sample(11:20, size = 100, replace = T)) %assert% c(min(x) > 0, max(x) < 11)
#Error in eval(expr, envir, enclos) : assertion max(x) < 11 is not true
Nó hoàn toàn chưa được kiểm tra, vì vậy hãy sử dụng với nguy hiểm của chính bạn!
20
Tôi luôn sử dụng stopifnot()
để xác nhận.
Các vấn đề liên quan
- 1. R caret/Làm thế nào để xác nhận chéo cho tàu trong công việc rfe
- 2. xác nhận chữ thập trong R
- 3. Làm thế nào để sử dụng xác nhận Struts2 để xác nhận điều kiện?
- 4. Làm thế nào để làm nội tâm trong R
- 5. Làm thế nào để xác định url mà chấp nhận everykind của chuỗi trong django
- 6. Làm thế nào để bỏ qua `\ r \ n 'trong chuỗi
- 7. Làm thế nào để thêm một thông báo tùy chỉnh để một xác nhận mô hình trong ko xác nhận
- 8. Làm thế nào để xác định một hàm vectorized trong R
- 9. Làm thế nào để xác nhận văn bản là không trống trong Rails
- 10. R: làm thế nào để xóa colums trong một data.table?
- 11. Làm thế nào để vẽ nhiều dòng trong R
- 12. Làm thế nào để lưu một data.frame trong R?
- 13. Làm thế nào để bắt lỗi/ngoại lệ trong R?
- 14. Làm thế nào để phát triển một gói trong R?
- 15. Làm thế nào để kiểm tra cờ EOF trong R?
- 16. Làm thế nào để loại bỏ đánh chặn trong R
- 17. Làm thế nào để vẽ cây gia đình trong R
- 18. Làm thế nào để xóa một cột trong R dataframe
- 19. Làm thế nào để vô hiệu hoá xác nhận mật khẩu/xác nhận khi sử dụng has_secure_password trong Rails 3.2?
- 20. Làm thế nào để xác nhận người dân địa phương về làm mẫu trong rspec
- 21. làm thế nào để sử dụng p: tiếng gầm vang lên chỉ để xác nhận không xác nhận jsf2 primefaces
- 22. Làm thế nào để xác nhận số và chữ cái viết hoa trong javascript
- 23. Làm thế nào để lập trình xác nhận người dùng trong Magento?
- 24. Làm thế nào để dừng xác nhận về sự cố ràng buộc trong Symfony2
- 25. Làm thế nào để bỏ qua xác nhận cho một nút trong ASP.NET?
- 26. Làm thế nào để thực hiện đúng "Xác nhận mật khẩu" trong ASP.NET MVC 3?
- 27. Làm thế nào để xác nhận hình thức với đầu vào [type = file] trong angularjs
- 28. Làm thế nào để mã logic xác nhận này trong Scala?
- 29. Làm thế nào để vô hiệu hóa xác nhận JSP trong Eclipse helios?
- 30. Làm thế nào để phủ nhận trong Prolog
Được phân bổ. Thật dễ dàng, rõ ràng, nó ở trong R Base và với nó rất phổ biến. –
nhưng bị dễ đọc. Tôi muốn giải thích lý do tại sao điều kiện tiên quyết thất bại và kiểm tra * chỉ đơn giản là _checkEquals (a, b, "a phải b") _ –
Hoặc sử dụng 'if' +' stop' cho phép kiểm tra điều kiện và đưa ra thông báo lỗi. – nico