Jak używać obiektów z globalnego środowiska W RStudio Markdown

Widziałem podobne pytania na Stack Overflow, ale praktycznie nie ma jednoznacznych odpowiedzi, a na pewno nie ma odpowiedzi, która zadziałała dla mnie.

Jaki jest najprostszy sposób dostępu i korzystania z obiektów (dopasowania regresyjne, ramki danych, inne obiekty), które znajdują się w globalnym środowisku R w skrypcie Markdown (Rstudio).

Dziwi mnie, że nie ma na to łatwego rozwiązania, biorąc pod uwagę tendencję zespołu RStudio do wygodnego i skuteczne.

Z góry dzięki.

Author: Adam Robinsson, 2015-12-01

6 answers

Na dobre i na złe, to pominięcie jest zamierzone. Poleganie na obiektach utworzonych poza dokumentem sprawia, że dokument jest mniej powtarzalny-oznacza to, że jeśli dokument potrzebuje danych w środowisku globalnym, nie możesz po prostu dać komuś (lub sobie w ciągu dwóch lat) plików dokumentu i danych i pozwolić mu je odtworzyć samodzielnie.

Z tego powodu i w celu wykonania renderowania w tle, RStudio tworzy oddzielną sesję Renderującą dokument. To tło Sesja R nie widzi żadnego ze środowisk w interaktywnej sesji r, którą widzisz w RStudio.

Najlepszym sposobem obejścia tego problemu jest zabranie kodu używanego do tworzenia zawartości środowiska globalnego i przeniesienie go do dokumentu (możesz użyć echo = FALSE, jeśli nie chcesz, aby pojawił się w dokumencie). To sprawia, że dokument jest samowystarczalny i powtarzalny.

Jeśli nie możesz tego zrobić, istnieje kilka metod, które możesz zastosować, aby wykorzystać dane w środowisku globalnym bezpośrednio:

  1. Zamiast używać przycisku HTML , Wpisz rmarkdown::render("your_doc.Rmd") w konsoli R. Będzie to wykonywane w bieżącej sesji zamiast sesji w tle. Alternatywnie:

  2. Zapisz swoje globalne środowisko do .Plik Rdata przed renderowaniem (użyj funkcji R save ) i załaduj do dokumentu.

 57
Author: Jonathan,
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
2015-12-01 22:06:52

Przechodząc do RStudios 'Tools' i 'Global options' i odwiedzając zakładkę 'R Markdown', możesz dokonać wyboru w 'Evaluate chunks in directory', tam wybierz opcję 'Documents' i R Markdown knitting engine będzie uzyskiwał dostęp do środowiska globalnego tak, jak robi to zwykły kod R. Mam nadzieję, że pomoże to tym, którzy przeszukują te informacje!

 3
Author: Patrik_P,
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-11 23:03:48

Cóż, w moim przypadku znalazłem następujące rozwiązanie:

(1) Save your Global Environmental in a .Plik Rdata w tym samym folderze, w którym masz swój .Plik Rmd. (Wystarczy kliknąć na obrazek disquet, który znajduje się na panelu" Global Environmental")

(2) wpisz następujący kod w skrypcie Rmarkdown:

load(file = "filename.RData") #  it load the file that you saved before
I przestań cierpieć.
 2
Author: Robin,
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-03-24 03:24:35

Sam mam ten sam problem. Niektóre rzeczy są dość czasochłonne, aby odtworzyć za każdym razem.

Myślę, że może być inna odpowiedź. Co zrobić, jeśli środowisko zostanie zapisane za pomocą funkcji save.image() do innego pliku niż standardowy .Rdata. Następnie przynieś go z load().

Aby mieć pewność, że używasz tych samych danych, użyj md5sum() z Narzędzia.

/ Align = "Left" / ]}
 1
Author: Cordura21,
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-05-29 10:04:33

Myślę, że rozwiązałem ten problem, odwołując się bezpośrednio do pakietu w kodzie, który jest dziany. Używając na przykład pakietu yarrr załadowałem ramkę danych "pirates" używając data(pirates). To działało dobrze na konsoli i w części kodu RStudio, ale z knitr nie powiodło się zgodnie ze wzorem w powyższym pytaniu. Jeśli jednak załadowałem dane do pamięci, tworząc obiekt za pomocą pirates <- yarrr::pirates, Dokument przeszedł do HTML.

 1
Author: invertdna,
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-08-14 21:27:22

Skrypt można wczytać w wybranym środowisku w następujący sposób:

```{r, include=FALSE}
source("your-script.R", local = knitr::knit_global())
# or sys.source("your-script.R", envir = knitr::knit_global())
```

Następnie w dokumencie R Markdown można używać obiektów utworzonych w tych skryptach (np. obiektów danych lub funkcji).

Https://bookdown.org/yihui/rmarkdown-cookbook/source-script.html

 0
Author: BorisV,
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-10-16 16:19:49