Điều này xảy ra với tôi thường xuyên hơn tôi nên thừa nhận. dplyr va chạm với MASS::select
, plyr::summarise
và stats::filter
trong số những thứ khác, đặc biệt là khi tải các gói tải một trong những thư viện đó qua thư viện (chúng không nên, nhưng một số vẫn làm) hoặc khi bạn tải dplyr trong .Rprofile
(không!). Và nó có thể dẫn đến các vấn đề khá mơ hồ, không phải lúc nào cũng là một thông báo lỗi, đặc biệt là xung đột với plyr
.
Tôi chỉ mới biết về chức năng conflicts()
. Điều này hữu ích, nhưng xung đột "quá báo cáo" khi hai gói có chức năng giống hệt nhau, ví dụ: tidyr :: %>%
và dplyr :: %>%
.
Vì vậy, tôi đã viết a function để cho tôi biết nếu tôi phát điên hoặc liệu có thực sự xung đột gây ra lỗi hiện tại hay không. Nó không chỉ kiểm tra các xung đột, nó sẽ kiểm tra xem một gói mong muốn nhất định có phải là gói "trên đầu" hay không và liệu các cơ quan của hàm có thực sự khác nhau hay không.
Nó thực hiện điều này cho dplyr theo mặc định, nhưng bạn có thể chỉ định một gói khác sử dụng tham số want_package
. Ví dụ, tôi thường bị vấp bởi recode
và alpha
, được sử dụng lại trong nhiều gói.
Cách sử dụng đơn giản: amigoingmad()
.
Theo mặc định, nó cũng sẽ tự động "sửa chữa" những điều nếu dplyr không phải là "trên", sử dụng các lệnh sau:
detach("package:dplyr", character.only = TRUE)
library("dplyr", character.only = TRUE)
Lưu ý rằng chức năng sẽ báo cáo nếu một chức năng người dùng chỉ định là chặn dplyr, nhưng không sửa lỗi này một cách tự động vì mục đích an toàn (chỉ cần xóa hàm trong trường hợp đó).
Hiện tại, giải pháp này không gây ra bất kỳ sự cố nào cho tôi. Tất nhiên tôi sẽ không biện hộ bằng cách sử dụng điều này trong mã sản xuất, nhưng khi bạn đang gỡ lỗi một .Rmd
-file và có thể đã làm rối trật tự tải do tai nạn đó là một cách nhanh chóng để tìm hiểu.
Nếu bạn muốn điều này trong một gói:
devtools::install_github("rubenarslan/formr")
Bạn có thể sử dụng nó như bạn chỉ cần viết: 'dplyr :: chọn (mpg)' –