Tôi đang cố gắng ngăn chặn cảnh báo bằng cách sử dụng chức năng suppressWarnings()
.suppressWarnings() không hoạt động với nhà điều hành đường ống
Đáng ngạc nhiên, nó sẽ loại bỏ cảnh báo khi được sử dụng bình thường, nhưng không làm như vậy khi bạn sử dụng nhà điều hành đường ống %>%
.
Dưới đây là một số mã ví dụ:
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
Tại sao nó làm việc với ngoặc nhưng không phải với nhà điều hành đường ống? Có một cú pháp cụ thể nào tôi nên sử dụng để làm cho nó hoạt động không?
Một cách giải quyết khác có thể là 'c (" 1 "," 2 "," ABC ")%>% {suppressWarnings (as.numeric (.))}' –
Tôi không mong đợi có cách để làm những gì bạn đang cố gắng làm. Toán tử đường ống lấy đối tượng được trả về bởi cuộc gọi trước đó và đẩy nó về phía trước để gọi thành công. Cảnh báo không phải là một phần của đối tượng; chúng được đúc khi chúng xuất hiện và không thể truyền từ một hàm này sang hàm khác. Tôi nghĩ rằng giải pháp dễ đọc nhất là bọc 'suppressWarnings' xung quanh chuỗi cuộc gọi đầy đủ. – Benjamin
Tôi đoán bạn sẽ có cùng một vấn đề với 'try' (để bắt lỗi) – Cath