2012-11-28 11 views
5

Mam kilka projektów RStudio, które skonfigurowałem do automatyzacji zadań, takich jak ocenianie testów wielokrotnego wyboru. Funkcje niezbędne do wykonania zadań są zapisywane w pliku tekstowym i aby upewnić się, że są one dostępne dla mnie lub innych użytkowników, używam pliku .Rprofile, który uruchamia się po uruchomieniu na przykład pod numerem source("MyFunctions.R"). Jeśli plik .Rprofile znajduje się w katalogu podstawowym projektu RStudio, jest on automatycznie uruchamiany podczas otwierania projektuPrzed uruchomieniem upewnij się, że wszystkie pakiety domyślne są załadowane .Rprofile

Jednak pojawiały się sporadyczne błędy, gdy funkcje dostarczane przez podstawowe pakiety R nie były ładowane przed skryptem. pochodzące, funkcje takie jak read.csv lub installed.packages, np:

Error in eval(expr, envir, enclos) : 
    could not find function "installed.packages" 

Czy istnieje jakiś sposób, aby czekać na pakiety domyślne załadować przed source() jest uruchamiany, zamiast dodawania jawnych library() zaproszenia do wszystkich pakietów domyślnych, które nie załadować?

Odpowiedz

6

To z ?Startup wydaje się dość ostateczne:

Zauważ, że gdy strona i profil użytkownika pliki są pozyskiwane tylko pakiet „baza” jest załadowany, więc obiekty w innych pakietach trzeba być określane na przykład przez "utils :: dump.frames" lub po jawnie ładowanie odpowiedniego pakietu.

W oparciu o to wyraźne zalecenie użycie numeru library() do załadowania niezbędnych pakietów wygląda najlepiej.

+0

Dzięki, wygląda na to, że powinienem przemyśleć się przy użyciu '.Rprofile' dla takich rzeczy. Traktowałem to jako szybki i wygodny sposób automatycznego ładowania funkcji i uruchamiania skryptów, i wygląda na to, że tak naprawdę nie działa. – Marius

+0

Jeśli jeszcze go nie widziałeś, możesz być zainteresowany tym klasycznym tagiem SO [r]: http://stackoverflow.com/questions/1189759/expert-r-users-whats-in-your-rprofile –

1

Będąc wskazał na odpowiedź dokumentacji ?Startup przez Josha, wygląda dodanie .First.sys() rozmowy na szczycie .Rprofile może być opcja, jako że wydaje się być funkcja, która obsługuje ładowanie wszystkich pakietów domyślnych. Zwykle jest uruchamiany po .Rprofile, co wyjaśniałoby błędy, które otrzymywałem.

Powiązane problemy