Próbuję ukryć ostrzeżenia za pomocą funkcji suppressWarnings()
.suppressWarnings() nie działa z operatorem potoku
Co zaskakujące, usuwa ostrzeżenia, gdy jest używany normalnie, ale nie robi tego podczas korzystania z operatora rury %>%
.
Oto przykładowy kod:
library(magrittr)
c("1", "2", "ABC") %>% as.numeric()
# [1] 1 2 NA
# Warning message:
# In function_list[[k]](value) : NAs introduced by coercion
c("1", "2", "ABC") %>% as.numeric() %>% suppressWarnings
# [1] 1 2 NA
# Warning message:
# In function_list[[i]](value) : NAs introduced by coercion
suppressWarnings(c("1", "2", "ABC") %>% as.numeric())
# [1] 1 2 NA
Dlaczego to działa w nawiasie, ale nie z operatorem rury? Czy istnieje specjalna składnia, której powinienem użyć, aby działała?
Innym obejściem może być "c (" 1 "," 2 "," ABC ")%>% {suppressWarnings (jako .numeryczne (.))}' –
Nie oczekuję, że istnieje sposób, aby zrobić to, co próbujesz do zrobienia. Operator potoku przyjmuje obiekt zwrócony przez poprzednie wywołanie i przekazuje je do następnego połączenia. Ostrzeżenia nie są częścią obiektów; są rzucane, gdy występują, i nie mogą być przekazywane z jednej funkcji do drugiej. Myślę, że najbardziej czytelnym rozwiązaniem jest ominięcie 'suppressWarnings' wokół całego łańcucha wywołań. – Benjamin
Myślę, że miałbyś ten sam problem z 'try' (aby uchwycić błędy) – Cath