Như bạn có thể đã nhìn lên các trang trợ giúp của bây giờ sử dụng ::
giúp truy cập vào các chức năng chính xác từ đó gói cụ thể. Khi bạn tải dplyr
bạn có thể nhận được tin nhắn như sau ..
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
Vì vậy, ví dụ, nếu bạn muốn sử dụng chức năng intersect
từ dplyr hoặc gói cơ bản, bạn cần phải xác định bằng cách sử dụng dấu hai chấm ::
đôi. Cách sử dụng sẽ như sau
mtcars$model <- rownames(mtcars)
first <- mtcars[1:20, ]
second <- mtcars[10:20, ]
dplyr::intersect(first, second)
base::intersect(first, second)
Cập nhật: thêm giải trình bổ sung
Lưu ý: Trình tự bạn tải thư viện xác định việc tiếp cận ưu đãi của các chức năng cụ thể. Các nhà phát triển các gói khác nhau có xu hướng sử dụng cùng một tên hàm. Tuy nhiên, khi R gặp một hàm, nó chạy qua các thư viện khác nhau mà phiên cụ thể đã tải theo cách tuần tự. Bạn có thể kiểm tra các gói trong một phiên bằng cách chạy (.packages())
[1] "tidyr" "data.table" "dplyr" "stats"
[5] "graphics" "grDevices" "utils" "datasets"
[9] "methods" "base"
Như bạn có thể thấy trong phiên ví dụ của tôi ở trên, tidyr
là thư viện cuối cùng tôi nạp, đó là phiên r nhập 1st. Vì vậy, khi bạn sử dụng bất kỳ chức năng nào trong mã của mình, trước tiên nó được tìm kiếm trong tidyr
-> sau đó data.table
-> sau đó dplyr
và cứ tiếp tục như vậy, cuối cùng gói dịch vụ base
được tra cứu. Vì vậy, trong quá trình này khi có tên hàm trùng lặp giữa các gói mà một trong đó nạp mặt nạ cuối cùng trước đó. Để tránh mặt nạ này, bạn chỉ định trong mã R để tìm hàm. Do đó, tại đây base::intersect
, sẽ sử dụng hàm từ thư viện cơ sở thay vì dplyr
. Ngoài ra, bạn có thể sử dụng để tránh tải thư viện hoàn chỉnh. Có tích cực và tiêu cực với điều này. Đọc các liên kết và tìm hiểu thêm.
chạy và kiểm tra sự khác biệt. Dưới đây là một số tài nguyên để bạn hiểu.
Compare library(), require(), ::
Namespace
xem các tập tin giúp đỡ ... '? '::'' – user20650
Cảm ơn, tôi không biết làm thế nào để truy cập vào các nhân vật giúp đỡ trong R! –
'help (" :: ")' cũng có thể được sử dụng nếu '?' Cho bạn những rắc rối. Các hàm luôn có thể được viết bằng dấu ngoặc kép. –