Overleaf zapewnia integrację z knitr, która pozwala dodawać kod R do dokumentu LaTeX w celu generowania dynamicznych wyników.Dokumenty zawierające kod R muszą być zapisane z rozszerzeniem .Rtex lub .Rnw, w przeciwnym razie kod nie zadziała. Spójrzmy na przykład:
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
Otwórz ten przykład knitr w OverleafJak widać, tekst między znakami <<>>= i @ to kod R. Ten kod i jego wynik są wyświetlane w formacie przypominającym listing. Ten fragment kodu może przyjmować dodatkowe parametry pozwalające dostosować dynamiczne wyniki, co opisano w następnej sekcji.
Blok kodu taki jak przedstawiony w poprzedniej sekcji jest zazwyczaj nazywany fragmentem (ang. chunk). We fragmentach knitr można ustawić dodatkowe opcje. Zobacz poniższy przykład:
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<echo=FALSE, cache=TRUE>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
echo=FALSEUkrywa kod i wyświetla tylko wynik wygenerowany przez R.
cache=TRUEJeśli cache ma wartość true, fragment nie jest uruchamiany, a używane są tylko wygenerowane przez niego obiekty. Pozwala to zaoszczędzić czas, jeśli dane w danym fragmencie się nie zmieniły.
Pamiętaj, że opcja cache=TRUE nie jest obecnie obsługiwana w Overleaf, ale powinna działać lokalnie.
Można uzyskać dostęp do obiektów wygenerowanych we fragmencie i wyświetlić je w tekście.
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<echo=FALSE, cache=TRUE>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@So, the mean of the data is $\Sexpr{mean(X)}$\end{document}
Otwórz ten przykład knitr w OverleafPolecenie \Sexpr{mean(X)} wyświetla wynik zwrócony przez kod R mean(X). Wewnątrz nawiasów klamrowych można przekazać dowolne polecenie R.
Otwórz ten przykład knitr w OverleafTen histogram wykorzystuje dane zapisane w pliku “data.txt”, znajdującym się w bieżącym katalogu roboczym. Do fragmentu przekazano kilka opcji związanych z rysunkiem.plot1To etykieta używana do odwoływania się do wykresu. Prefiks “fig:” jest obowiązkowy. W przykładzie widać, że do rysunku odwołano się za pomocą \ref{fig:plot1}.fig.pos="t" parametr położenia. Jest to ten sam parametr, który stosuje się w środowisku figure.fig.height=4, fig.width=4Szerokość i wysokość rysunku.fig.cap="First plot"Podpis rysunku.
Do dokumentu knitr można importować części zewnętrznego skryptu R. Jest to bardzo pomocne, ponieważ dość często pisze się i debuguje skrypt w zewnętrznym programie, zanim zostanie on dołączony do dokumentu.Załóżmy, że w pliku o nazwie mycode.R mamy następujący kod R, który dołączamy do dokumentu LaTeX:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Zwróć uwagę na wiersze:
## ---- myrcode1
oraz
## ---- myrcode2
Oznaczają one początek fragmentu kodu i są obowiązkowe, jeśli chcesz użyć tego skryptu w dokumencie, jak pokazano w poniższym fragmencie kodu:
The chunk below will not be printed<<echo=FALSE, cache=FALSE>>=read_chunk("mycode.R")@The code must show up here<<myrcode2>>=@
Pierwszy fragment nie jest wyświetlany i służy jedynie do zaimportowania skryptu za pomocą polecenia read_chunk("mycode.R"). Dlatego ustawiono opcję echo=FALSE. Ponadto skrypty nie mogą być buforowane. Po zaimportowaniu skryptu możesz wyświetlić fragment, używając etykiety ustawionej po ## ----. W tym przypadku jest to myrcode2.Wszystkie fragmenty kodu z tego artykułu umieściliśmy w projekcie, który możesz otworzyć w Overleaf.