Czy zaleca się używanie funkcji sprawdzania * RUnit w celu wykonania warunków wstępnych/oświadczeń o stanie końcowym, czy też mają one pewną karalność w działaniu lub inne?Jak tworzyć asercje w R?
10
A
Odpowiedz
4
Wiem, że to stary post, ale być może ta odpowiedź będzie przydatna dla osób szukających asercji R w formie operatora. Może to być krok we właściwym kierunku, jeśli chcesz umieścić twierdzenie na końcu kłopotliwego stwierdzenia.
"%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))
}
Przykład: jeśli obliczenie średniej wektora X i chcesz się upewnić, że każdy element jest od jednego do dziesięciu można użyć
mean(x = sample(1:10, size = 100, replace = T)) %assert% c(min(x) > 0 && max(x) < 11)
#5.62
Jeśli ten warunek ISN” t prawda, dostaniesz informacyjny (ish) błąd taki jak
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
To całkowicie niesprawdzone, więc używać na własne ryzyko!
20
Zawsze używam stopifnot()
dla asercji.
Powiązane problemy
- 1. Jak mogę tworzyć asercje czasu kompilacji bez C++ 11
- 2. W jaki sposób mogę tworzyć asercje should.js dotyczące dat?
- 3. Asercje w JavaScript
- 4. Jak mogę mieć asercje zmiennych w Perlu?
- 5. Jak mogę włączyć asercje Java w Tomcat
- 6. Jak tworzyć asercje wewnątrz obietnicy, gdy jakiekolwiek rzucone błędy nie są bańkami?
- 7. asercja vs JUnit Asercje
- 8. Jak napisać niestandardowe asercje PHPUnit, które zachowuje się jak wbudowane asercje?
- 9. Jak tworzyć wieloboki thiessen z punktów za pomocą pakietów R?
- 10. Jak programowo przetestować, czy włączone są asercje?
- 11. Włącz asercje w Play! tryb rozwoju
- 12. Asercje kompilacji z GHC Haskell?
- 13. Jak tworzyć podtypy w Moose?
- 14. Jak tworzyć kategorie w Railsach
- 15. Jak tworzyć obiekty w Perlu?
- 16. R tworzyć listę z przyrostu innych niż 1
- 17. Jak tworzyć klejnoty?
- 18. Jak tworzyć statystyki dźwigni?
- 19. Jak tworzyć działki w wielu oknach i przechowywać je osobno w R
- 20. Jak tworzyć kawałki układanki bez użycia maski?
- 21. Jak tworzyć obiekty w locie w python?
- 22. Asercje testowe dla krotek z pływami
- 23. Jak połączyć asercje kolekcji i własności za pomocą twierdzeń płynnych?
- 24. Ulotka na R: Jak tworzyć warstwy i kolory dla każdego poziomu czynnika w dataframe
- 25. Jak tworzyć konta użytkowników w MongoDB?
- 26. Jak tworzyć katalogi rekursywnie w Ruby?
- 27. Jak tworzyć wielostronicowe tabele krajobrazów w LaTeX
- 28. Jak dynamicznie tworzyć kolumny w tablelayout?
- 29. Jak tworzyć motywy w ramce yii?
- 30. Jak tworzyć i używać Enum w mangurze
Oddelegowany. To proste, jasne, jest w bazie R, a przy tym jest wszechobecne. –
ale cierpi na czytelność. Chcę wyjaśnić, dlaczego warunek wstępny nie powiódł się, a check * jest po prostu piękny _checkEquals (a, b, "a must be b") _ –
Alternatywnie użycie 'if' +' stop' pozwala sprawdzić warunek i dać komunikat o błędzie. – nico