Zmień domyślną ścieżkę biblioteki r używając.libPaths w Rprofile.strona nie działa

Używam R w systemie Windows, nie jako administrator. Gdy instaluję pakiet, następujące polecenie nie działa:

> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable

Aby zainstalować pakiet, muszę podać lokalizację biblioteki:

install.packages("zoo", lib="C:/software/Rpackages")

Aby załadować pakiet, muszę również określić lokalizację biblioteki:

library("zoo", lib.loc="C:/software/Rpackages")

Wszystko jest OK, ale chciałem zobaczyć, czy mogę jakoś dodać C:/software/Rpackages do ścieżki biblioteki i tym samym nie muszę jej wpisywać za każdym razem.

Gdy szukałem w Internecie, znalazłem jednym ze sposobów na to jest edycja pliku Rprofile.site i dodanie linii

.libPaths("C:/software/Rpackages")

Jednak po zrobieniu tego i uruchomieniu RStudio, jest to wyjście, które otrzymuję

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

.libPaths polecenie, które dodałem do Rprofile.site nie wydaje się mieć żadnego efektu! Dlaczego tak jest? A co ważniejsze, jak mogę rozwiązać problem, aby móc instalować i ładować pakiety bez wpisywania w lokalizacji biblioteki?

Uwaga: Jeśli uruchamiam RStudio, komenda .libPaths() wydaje się działać tak, jak jest przypuszczalnie

.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
Czy to nie dziwne?
Author: zx8754, 2013-03-02

15 answers

Generalnie staram się trzymać wszystkie moje pakiety w jednej bibliotece, ale jeśli chcesz dodać bibliotekę, dlaczego nie dodać nowej biblioteki (która musi już istnieć w Twoim systemie plików) do istniejącej ścieżki?

.libPaths( c( .libPaths(), "~/userLibrary") )

Lub (a to uczyni userLibrary pierwszym miejscem do umieszczania nowych pakietów):

.libPaths( c( "~/userLibrary" , .libPaths() ) )

Potem dostaję (przynajmniej kiedy pisałem to oryginalnie):

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"  

Funkcja .libPaths jest nieco inna niż większość innych funkcji niegraficznych. Działa poprzez efekt uboczny. Funkcje Sys.getenv i Sys.setenv, które raportują i zmieniają zmienne środowiskowe R zostały rozdzielone, ale .libPaths mogą raportować lub zmieniać swój cel.

Informacje o uruchomieniu R można przeczytać na stronie pomocy ?Startup, a materiał RStudio znajduje się na stronie: https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

W Twoim przypadku wygląda na to, że RStudio nie respektuje RPROFILE.ustawienia strony lub być może jest nadrzędne je czytając an .Ustawienie Rprofile z jednej z domyślnych wartości RStudio. Należy również wspomnieć, że wynik tej operacji dodaje również zawartość wywołań do .Library i .Library.site, co jest kolejnym powodem, dla którego RStudio- (lub inne IDE lub sieć zainstalowana-) hostowane R może wykazywać inne zachowanie.

Ponieważ Sys.getenv() zwraca bieżące środowisko systemowe dla procesu R, możesz zobaczyć bibliotekę i inne ścieżki z:

Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]

Dwa, które mają znaczenie dla przechowywania i dostęp do pakietów są (teraz inne na Linuksie):

R_LIBS_SITE                          /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER                          /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/
 175
Author: IRTFM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-21 18:47:46

Właściwym rozwiązaniem jest ustawienie zmiennej środowiskowej R_LIBS_USER na wartość ścieżki pliku do pożądanego folderu biblioteki, zamiast uzyskiwania RStudio do rozpoznawania pliku RPROFILE.plik strony.

Aby ustawić zmienną środowiskową R_LIBS_USER w systemie Windows, przejdź do Panelu sterowania (Właściwości systemu - > zaawansowane właściwości systemu - > zmienne środowiskowe - > zmienne użytkownika) na żądaną wartość (ścieżkę do folderu biblioteki), np.

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  

Jeśli z jakiegoś powodu nie masz dostępu do kontroli panel, możesz spróbować uruchomić rundll32 sysdm.cpl,EditEnvironmentVariables z linii poleceń w systemie Windows i dodać stamtąd zmienną środowiskową.

Ustawienie R_LIBS_USER zapewni, że biblioteka pojawi się jako pierwsza .libPaths() niezależnie od uruchomienia RStudio bezpośrednio lub klikając prawym przyciskiem myszy plik i "Otwórz", aby uruchomić RStudio.

Rozwiązanie Rprofile może działać, jeśli RStudio jest zawsze uruchamiane przez kliknięcie skrótu RStudio. W tym przypadku ustawienie domyślnego katalogu roboczego na katalog, w którym znajduje się Twój Rprofile będzie wystarczający. Rozwiązanie Rprofile nie działa podczas klikania pliku, aby uruchomić RStudio, ponieważ zmienia to katalog roboczy z dala od domyślnego katalogu roboczego.

 231
Author: Paweł Rumian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-08 03:26:11

Udało mi się rozwiązać problem umieszczając kod w pliku .Rprofile w domyślnym katalogu roboczym.

Najpierw znalazłem lokalizację domyślnego katalogu roboczego

> getwd()
[1] "C:/Users/me/Documents"

Potem użyłem edytora tekstu do napisania prostego pliku .Rprofile z następującą linijką

.libPaths("C:/software/Rpackages")

Wreszcie, kiedy uruchamiam R i uruchamiam .libPaths() otrzymuję pożądane wyjście:

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
 25
Author: I Like to Code,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-04 06:33:38
 16
Author: bowen.li,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-14 05:45:00

Znalazłem to, co myślę jest rozwiązaniem tutaj (dziękuję Carl Schwarz na SFU) za dodanie osobistej biblioteki, która jest na stałe (nie musisz definiować jej każdej sesji) rozpoznawane czy za pomocą R lub Rstudio, i RStudio traktuje to jako domyślne na moim komputerze Mac. Nie widziałem tego wyraźnie NA SO, więc podsumowałem kroki, które podali, Dla Windows, a następnie Dla Mac.

Dla systemu operacyjnego Windows 7:

  1. Utwórz katalog na dysku, w którym chcesz mieć własną bibliotekę, np. C:\User\Rlibs (lub inny, do którego masz uprawnienia)

  2. Wyszukaj/przejdź do "edytuj zmienną środowiskową dla swojego konta" w pasku wyszukiwania Windows, aby edytować ustawienia panelu sterowania

  3. Kliknij " Nowy..."w środku okna" zmienne środowiskowe "

  4. W oknie" Nowa zmienna użytkownika " wpisz R_LIBS dla "Nazwa zmiennej" i ścieżkę do utworzonego osobistego katalogu biblioteki, np. C:\User\Rlibs

  5. Kliknij OK i zobaczysz parę zmienna / wartość w oknie zmienne użytkownika

  6. Kliknij ponownie OK

Teraz po uruchomieniu R (lub Rstudio) i wpisaniu polecenia .libPaths() powinieneś zobaczyć bibliotekę osobistą, którą utworzyłeś, jak również bibliotekę systemową R.

Dla Mac:

  1. W katalogu" Home "lub" username " utwórz folder o nazwie Rlibs

  2. Uruchom Aplikacja terminala

  3. Type: echo "R_LIBS=~/Rlibs"> .Renvrion Upewnij się, że wielkość liter pasuje.

  4. Wpisz ls -a, aby zobaczyć pełną listę plików w katalogu, która powinna teraz zawierać .Renvrion

  5. Sprawdź, czy .Plik Renviron {[27] } został poprawnie ustawiony: more .Renviron

Uruchom R / Rstudio i wpisz {[0] } i powinieneś zobaczyć nową ścieżkę do swojej osobistej biblioteki.

 11
Author: Whalen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-12 15:00:45

Jeśli nie masz uprawnień administratora, pomocne może być również otwarcie Rprofile.site - pliku znajdującego się w \r-3.1.0 \ etc i dodanie:

.First <- function(){
  .libPaths("your path here")
}

To ewaluuje polecenie .libPath() bezpośrednio przy starcie

 8
Author: schlusie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-14 13:46:01

Miałem problemy ze zrozumieniem tego. gorkypl podał poprawne rozwiązanie powyżej, gdy ostatnio ponownie zainstalowałem mój OS & Rstudio, ale tym razem ustawienie mojej zmiennej środowiskowej nie rozwiązało.

Odinstalowałem zarówno R jak i Rstudio, tworząc katalogi C:\R i C:\Rstudio następnie ponownie zainstalowane oba.

Zdefiniuj zmienną użytkownika R_LIBS_USER do preferowanego katalogu (zgodnie z odpowiedzią gorkypla) i uruchom ponownie komputer, aby załadować zmienną użytkownika. Otwórz Rstudio, błędy powinny być zniknął.

Możesz również użyć Sys.setenv(), aby zmodyfikować r_libs_user do Ścieżki alternatywnej biblioteki, co jest łatwiejsze i nie wymaga ponownego uruchamiania komputera.

Aby zobaczyć, na co jest ustawione R_LIBS_USER: ?Sys.getenv()

Czytanie help(Startup) jest przydatne.

 4
Author: felixmc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-10 21:24:57

Po prostu zmień domyślny folder dla swoich bibliotek R w katalogu bez uprawnień administratora, np.

.libPaths("C:/R/libs")
 3
Author: Sébastien Wieckowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-14 11:12:11

Jeśli domyślna biblioteka pakietów została zmieniona po zainstalowaniu nowej wersji R lub w jakikolwiek inny sposób, możesz dołączyć obie biblioteki do użycia wszystkich pakietów za pomocą poniższych poleceń. Pobranie istniejącej ścieżki biblioteki:

.libPaths()

Teraz ustaw istniejącą i starą ścieżkę:

.libPaths(c(.libPaths(), "~/yourOldPath"))

Mam nadzieję, że to pomoże.
 2
Author: Shivong Birla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-14 07:07:37

Czytam readme. W tym wspomnieli o użyciu .libPaths () w wierszu poleceń, aby sprawdzić, które ścieżki tam są. Miałem wcześniej 2 ścieżki biblioteczne. Kiedy użyłem polecenia .libpath ("C:/Program Files / R / R-3.2.4 revised / library") tam, gdzie chciałem, zmienił ścieżkę do biblioteki. Kiedy pisałem .libPaths () w wierszu poleceń ponownie pokazała mi poprawną ścieżkę. Mam nadzieję, że to pomoże

 1
Author: Supriya Deverkonda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-08 04:11:22

W Ubuntu, zalecanym sposobem zmiany domyślnej ścieżki biblioteki dla użytkownika jest ustawienie zmiennej R_LIBS_USER w pliku ~/.Renviron.

touch ~/.Renviron
echo "R_LIBS_USER=/custom/path/in/absolute/form" >> ~/.Renviron
 1
Author: tzabal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-30 08:15:01
getwd()
# [1] "C:/Users/..../software/My R studio"

Skopiuj powyższy link z podwójnym odwróconym przecinkiem

.libPaths(new="C:/Users/..../software/My R studio")

Domyślna ścieżka zostanie zmieniona podczas instalowania pakietów

 0
Author: Sayed Mohammed Zeeshan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-05 09:50:24

Jeśli chcesz zmienić ścieżkę biblioteki na stałe (bez wywołania .libPath() za każdym razem, gdy wchodzi w r, działa to dla mnie:

  1. Twórz .Rprofile w katalogu domowym. (~/.Rprofile)

  2. Typ .libPaths(c( .libPaths(), "your new path" )) do środka .Plik Rprofile, Zapisz.

  3. Otwórz R (dowolny katalog) i sprawdź, po prostu wpisz .libPaths(), Możesz znaleźć ścieżkę libaray jest zaktualizowany!

 0
Author: Pengyao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-03 19:12:29

Ponieważ większość odpowiedzi tutaj są związane z Windows i Mac OS, (i biorąc pod uwagę, że ja również borykał się z tym) postanowiłem opublikować proces, który pomógł mi rozwiązać ten problem w mojej konfiguracji Arch Linux .

Krok 1:

  • wykonaj globalne przeszukiwanie systemu (np. ANGRYSearch ) pod kątem terminu Renviron (który jest plikiem konfiguracyjnym, w którym ustawione są ustawienia bibliotek użytkownika).
  • powinien zwrócić tylko dwa wyniki w following directory paths:
    1. /etc/R/
    2. /usr/lib/R/etc/
      Uwaga: pliki konfiguracyjne Renviron przechowywane na 1 i 2 (powyżej) są ze sobą połączone na gorąco (co oznacza, że zmiany wprowadzone w jednym pliku zostaną automatycznie zastosowane [ w tej samej formie / strukturze ] do drugiego pliku, gdy edytowany plik zostanie zapisany - [ potrzebne są również prawa sudo do zapisania pliku po edycji]) .

Krok 2:

  • przejdź do pierwszą ścieżkę katalogu (/etc/R/) i otworzyć plik Renviron w ulubionym edytorze tekstu.
  • po wejściu do pliku Renviron wyszukaj znacznik R_LIBS_USER i zaktualizuj tekst w sekcji nawiasy klamrowe do wybranej ścieżki katalogu.

    przykład:
    ... zmiana z ( oryginalny wpis ):
    R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/4.0'}
    ... Zmień na ( Twój pożądany wpis ):
    R_LIBS_USER=${R_LIBS_USER-'~/Apps/R/rUserLibs'}

Krok 3:

  • Zapisz plik Renviron, który właśnie edytowałeś ... zrobione !!
 0
Author: SilSur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-25 11:15:51

Przyglądałem się temu, ponieważ R miał problemy z instalacją w domyślnej lokalizacji i zamiast tego umieszczał pakiety w folderze tymczasowym. Okazało się, że jest to najnowsza aktualizacja Mcaffee Endpoint Security, która najwyraźniej ma problemy z R. możesz wyłączyć ochronę przed zagrożeniami podczas instalacji pakietów i będzie działać poprawnie.

 -2
Author: Kristen Bystrom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-18 23:15:47