Niedawno odkryłem, że błędy mogą być spowodowane z powodu konfliktów między pakietami, to znaczy dwa (lub więcej) pakiety mogą mieć funkcje o nazwie podobnie. Wiem, że kod search()
tworzy listę pakietów zamówionych w taki sposób, w jaki odczytuje je R. Istnieje również kod args
, który daje funkcję odczytaną przez R.
Co chciałbym wiedzieć, po pierwsze, jest to, jak wykryć, jeśli błąd jest tworzony ze względu na konflikty między pakietami i po drugie, jak dowiedzieć się, które pakiety są sprzeczne? Wreszcie, po wykryciu konfliktów, w jaki sposób możemy zmusić R do używania konkretnej funkcji z jednego z pakietów?Wykryj konflikty między pakietami w R
Odpowiedz
Jak mówi @Paul, podczas mocowania (np poprzez library
funkcja) pakiet można uzyskać:
> 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
Gdy otrzymasz komunikat "Następujące obiekty są zamaskowane" oznacza, że wywołania do tych funkcji będą traktowane przez R jako wywołania funkcji w nowym pakiecie, w moim przykładzie gdata
.
Można tego uniknąć poprzez:
> nobs
function (object, ...)
UseMethod("nobs")
<environment: namespace:gdata>
> stats::nobs
function (object, ...)
UseMethod("nobs")
<bytecode: 0x0000000008a92790>
<environment: namespace:stats
nadzieję, że pomoże
Wielkie dzięki Michele. To dokładnie to, czego potrzebowałem. – Vara
Jeśli R wczyta nowy pakiet, wyświetli ostrzeżenie, jeśli nowe opakowanie zawiera jakiekolwiek funkcje, które są już obecne w środowisku pracy. Więc jeśli zwracasz uwagę podczas ładowania pakietu, możesz zobaczyć, czy są jakieś konflikty. Gdy istnieją konflikty, można wymusić R, aby korzystać z funkcji z danego pakietu tak:
package_name::function_name
myślę szukasz getAnywhere
który będzie Ci wszystkich miejsc jej argument istnieje powiedzieć. Na przykład. (w moim bieżącym zestawie obciążenia):
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
Dzięki za odpowiedź Carl, nie wiedziałem o tym kodzie. Uważam jednak, że pomocne jest, gdy z góry wiadomo, który argument jest w konflikcie. – Vara
- 1. Logowanie globalnie (między pakietami)
- 2. Różnica między pakietami Umbraco NuGet
- 3. Konflikty między ramami unittest i nose
- 4. Między przeglądarkami: wykryj zdarzenie rozmycia w oknie
- 5. Czy istnieje skuteczny sposób udostępniania struktury między pakietami golang?
- 6. Jaka jest różnica między pakietami Spark ML i MLLIB?
- 7. Czy wszystkie odniesienia cykliczne między pakietami Java są złe?
- 8. Jakie są różnice między pakietami PloneTestCase, plone.testing i plone.app.testing?
- 9. Zipimport z pakietami
- 10. Zarządzanie pakietami TypeScript
- 11. Konflikty między nazwami członkowskich i nazwy argument konstruktora
- 12. Konflikty nazw w zapisach Haskella
- 13. RPM ignoruje konflikty
- 14. Dziedziczenie stałych z pakietami wbudowanymi
- 15. Wykryj liczbę rdzeni w oknach
- 16. W tym dodatkowe zasoby z pakietami OSGi
- 17. Zarządzanie pakietami w git dla Windows?
- 18. mod_jk konflikty z mod_rewrite
- 19. Użyj pip lub conda do zarządzania pakietami?
- 20. Różnice między datami w wierszach w R
- 21. Różnice między hash a listami w R
- 22. Czy istnieją techniczne powody, aby unikać tworzenia wysoce splątanych zależności między pakietami w dużych projektach Java?
- 23. Jak mogę rozwiązać konflikty importu w scala?
- 24. Jak rozwiązać konflikty w systemie TFS?
- 25. Jak rozwiązać konflikty git w yarn.lock
- 26. Jak rozwiązać konflikty łączące w Mercurial (v1.0.2)?
- 27. Rozwiązuj opóźnione konflikty z SVN
- 28. Subversion szybko rozwiązać wszystkie konflikty
- 29. NDesk.Options - wykryj niepoprawne argumenty
- 30. JsTree powoduje konflikty z jquery.validate
tj. spróbuj 'konflikty (szczegóły = PRAWDA)' –