Różnica między require() a biblioteką() w r
Do ładowania pakietów w R można używać zarówno funkcji require(), jak i Library() , ale istnieje między nimi subtelna różnica:
- require() wyświetli ostrzeżenie, jeśli pakiet nie jest zainstalowany, a następnie będzie kontynuować wykonywanie kodu.
- biblioteka() zgłosi błąd i zatrzyma wykonywanie kodu.
Z powodu tej różnicy funkcja require() jest zwykle używana tylko wtedy, gdy ładujesz pakiety do funkcji, tak aby funkcja nadal działała, nawet jeśli pakiet nie istnieje.
W praktyce większość programistów zaleca używanie biblioteki() , ponieważ będziesz chciał otrzymać komunikat o błędzie informujący, że pakiet nie został zainstalowany.
Jest to coś, o czym powinieneś wiedzieć jak najwcześniej podczas pisania kodu.
Poniższy przykład ilustruje w praktyce różnicę między funkcjami require() i Library() .
Przykład: różnica między require() a biblioteką() w R
Załóżmy, że chcemy załadować zestaw danych BostonHousing z pakietu mlbench , ale załóżmy, że pakiet mlbench nie jest jeszcze zainstalowany.
Poniższy kod ilustruje sposób użycia funkcji biblioteki() do próby załadowania tego pakietu i przeprowadzenia analizy danych w zestawie danych BostonHousing :
#attempt to load mlbench library library (mlbench) Error in library(mlbench): there is no package called 'mlbench' #load Boston Housing dataset data(BostonHousing) #view summary of Boston Housing dataset summary(BostonHousing) #view total number of rows in Boston Housing dataset nrow(BostonHousing)
Ponieważ pakiet mlbench nie jest jeszcze zainstalowany, przy użyciu funkcji Library() pojawia się błąd, a reszta kodu nie jest nawet wykonywana.
Jest to przydatne, ponieważ natychmiast informuje nas, że ten pakiet nie jest zainstalowany i że musimy go zainstalować przed kontynuowaniem.
Załóżmy jednak, że zamiast tego używamy require() do załadowania pakietu mlbench :
#attempt to load mlbench library require (mlbench) Warning message: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : there is no package called 'mlbench' #load Boston Housing dataset data(BostonHousing) Warning message: In data(BostonHousing) : data set 'BostonHousing' not found #view summary of Boston Housing dataset summary(BostonHousing) Error in summary(BostonHousing): object 'BostonHousing' not found #view total number of rows in Boston Housing dataset nrow(BostonHousing)
W tym przykładzie komunikat o błędzie nie zostanie wyświetlony, dopóki nie spróbujemy użyć funkcji podsumowania() w celu podsumowania zbioru danych BostonHousing .
Zamiast tego po użyciu funkcji require() otrzymujemy ostrzeżenie, a reszta kodu jest wykonywana do momentu napotkania błędu.
Ten przykład ilustruje różnicę między biblioteką() a wymaganiem() w R: Funkcja biblioteki() natychmiast generuje błąd i nie wykonuje reszty kodu, ponieważ mlbench nie jest załadowany.
Dlatego w większości scenariuszy będziesz chciał użyć funkcji biblioteki() podczas ładowania pakietów.
Bonus: sprawdź, czy dany pakiet jest zainstalowany
Możemy użyć funkcji system.file() , aby sprawdzić, czy dany pakiet jest zainstalowany w naszym bieżącym środowisku R.
Na przykład możemy użyć następującej składni, aby sprawdzić, czy pakiet ggplot2 jest zainstalowany w bieżącym środowisku R:
#check if ggplot2 is installed system. file (package=' ggplot2 ') [1] "C:/Users/bob/Documents/R/win-library/4.0/ggplot2"
Ponieważ zainstalowano ggplot2, funkcja po prostu zwraca ścieżkę pliku, w którym zainstalowany jest pakiet.
Załóżmy teraz, że sprawdzamy, czy pakiet mlbench jest zainstalowany:
#check if mlbench is installed system. file (package=' mlbench ') [1] ""
Funkcja zwraca pusty ciąg znaków, który informuje nas, że pakiet mlbench nie jest zainstalowany w naszym obecnym środowisku.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:
Jak załadować wiele pakietów w R
Jak wyczyścić środowisko w R
Jak wyczyścić wszystkie działki w RStudio