Gần đây tôi đã phát hiện ra rằng có thể gây ra lỗi do xung đột giữa các gói, nghĩa là hai (hoặc nhiều) gói có thể có các hàm tương tự. Tôi biết rằng mã số search()
tạo danh sách các gói được đặt hàng theo cách R đọc chúng. Ngoài ra còn có mã args
cung cấp chức năng đọc bởi R.
Điều tôi muốn biết trước tiên là làm thế nào để phát hiện xem lỗi có được tạo ra do xung đột giữa các gói và thứ hai làm thế nào để tìm ra gói nào đang xung đột? Cuối cùng, sau khi các xung đột đã được phát hiện, làm thế nào chúng ta có thể buộc R sử dụng cụ thể chức năng từ một trong các gói?Phát hiện xung đột giữa các gói trong R
Trả lời
Như @ Paul nói, khi gắn (ví dụ như thông qua library
chức năng) một gói, bạn có thể nhận được:
> library("gdata", lib.loc="C:/Program Files/R/R-2.15.3/library")
gdata: read.xls support for 'XLS' (Excel 97-2004) files ENABLED.
gdata: read.xls support for 'XLSX' (Excel 2007+) files ENABLED.
Attaching package: ‘gdata’
The following object(s) are masked from ‘package:stats’:
nobs
The following object(s) are masked from ‘package:utils’:
object.size
Khi bạn nhận được "Các đối tượng sau đây được đeo mặt nạ" có nghĩa là các cuộc gọi đến các chức năng đó sẽ được R coi là cuộc gọi đến các chức năng trong gói mới, trong ví dụ gdata
của tôi.
Bạn có thể tránh điều này qua:
> nobs
function (object, ...)
UseMethod("nobs")
<environment: namespace:gdata>
> stats::nobs
function (object, ...)
UseMethod("nobs")
<bytecode: 0x0000000008a92790>
<environment: namespace:stats
hy vọng rằng sẽ giúp
Cảm ơn Michele rất nhiều. Đây chính xác là những gì tôi cần. – Vara
Nếu R tải gói mới, gói này sẽ tạo cảnh báo nếu gói mới chứa bất kỳ chức năng nào đã có trong môi trường làm việc. Vì vậy, nếu bạn chú ý trong quá trình tải gói, bạn có thể xem có bất kỳ xung đột nào không. Khi có xung đột, bạn có thể buộc R để sử dụng chức năng từ một gói phần mềm đặc biệt như thế này:
package_name::function_name
Tôi nghĩ rằng bạn đang tìm kiếm getAnywhere
mà sẽ cho bạn biết tất cả các nơi đối số của nó tồn tại. Ví dụ. (trong bộ tải hiện tại của tôi):
Rgames> getAnywhere(logit)
2 differing objects matching ‘logit’ were found
in the following places
package:boot
package:pracma
namespace:boot
namespace:pracma
Use [] to view one of them
Cảm ơn câu trả lời Carl, tôi không biết về mã này. Tuy nhiên, tôi nghĩ rằng nó hữu ích khi bạn biết trước chính xác lập luận xung đột nào. – Vara
- 1. phát hiện xung đột trong cocos2d
- 2. Thuật toán tốt nhất để phát hiện xung đột hiệu quả giữa các đối tượng
- 3. Hội đồng nào xung đột trong "xung đột giữa các phiên bản khác nhau"?
- 4. Sphere - phát hiện xung đột hình cầu -> phản ứng
- 5. Phát hiện xem hai dải số có xung đột không
- 6. Cách phát hiện xung đột giữa hai kho lưu trữ git.
- 7. Tên xung đột giữa gói và lớp học. Lỗi trong Eclipse hoặc javac?
- 8. Phát hiện đạo văn - thuật toán chiến thắng - dấu vân tay xung đột
- 9. xung đột đặt tên hàm
- 10. Xung đột Enum và Xung đột đặt tên thuộc tính
- 11. Xung đột giữa ưu tiên liên kết động trong OSX?
- 12. RavenDB và SignalR Nuget Xung đột phụ thuộc gói
- 13. Xung đột jQuery & Prototype
- 14. Reference xung đột
- 15. xung đột đối chiếu
- 16. Tên xung đột giữa các nhãn trường của các kiểu dữ liệu khác nhau trong Haskell
- 17. Xung đột: lỗi xung đột cơ sở dữ liệu
- 18. Mối quan hệ giữa việc vẽ các gói trong R
- 19. Các xung đột đặt tên trong các định nghĩa AngularJS
- 20. Giải quyết các xung đột Git Svn
- 21. Xung đột giữa không gian tên và xác định
- 22. Làm cách nào để phát hiện xung đồng hồ giữa các nút trong vai trò Azure?
- 23. Xung đột giữa nhiều thư viện "android-support-v4"
- 24. Xung đột giữa jQuery và Zoomooz.js: animate & zoomTarget cùng lúc
- 25. Nhóm SQL theo các xung đột ngày
- 26. Sử dụng Microsoft.WindowsAzure.StorageClient.TableServicesContext và phát hiện xung đột cập nhật đồng thời
- 27. Git xung đột dấu
- 28. Xung đột với `git rebase`
- 29. WSImport tạo ra các XMLTypes xung đột cho nhiều
- 30. chiếu xung đột sql máy chủ
tức là thử 'mâu thuẫn (chi tiết = TRUE)' –