1 R Markdown
1.1 Mardown
“Markdown is a lightweight markup language for creating formatted
text using a plain-text editor. John Gruber and Aaron Swartz created
Markdown in 2004 as a markup language that is appealing to human readers
in its source code form Markdown is widely used in blogging, instant
messaging, online forums, collaborative software, documentation pages,
and readme files.”
1.2 R Markdown, knit
Pozwala na elastyczne łączenie tekstu, Markdown, TeXa, R i html w
jednym pliku i utworzenie dokumentu wyjściowego w formacie m.in. html i
pdf (wszystkie laboratoria przygotowane zostały w ten sposób).
1.3 Pierwszy plik R
Markdown
Z menu File wybieramy New File, a następnie
pozycję R Markdown

Powinien otworzyć się okno:

gdzie możemy nadać Tytuł tworzonego dokumentu oraz autora. Możemy też
wybrać rodzaj dokumentu wyjściowego (zostawmy HTML, PDF wymaga
zainstalowanego MiKTeXa - zobaczymy na miejscu czy działa).
Powinien utworzyć się nowy dokument, który obowiązkowo
zapisujemy pod wybraną nazwą w osobnym folderze. Będziemy generować
dodatkowe pliki, które automatycznie zapiszą się w tym folderze, więc
wybór “Pulpitu” nie jest dobrym wyborem (choć nie zakazanym, po
prostu zły pomysł). Powinno pojawić się nowe okno z przykładową
treścią:

Po zapisaniu pliku klikamy przycisk
Knit:

aby skompilować dokument. Po chwili powinno się pojawić okno
wbudowanej przeglądarki z naszym dokumentem. Dokument ten (o ile nic nie
zostało zmienione) powinien się też zapisać w tym samym folderze - plik
HTML.
Obok przycisku Knit znajduje się strzałka - umożliwia
kompilacje pliku do formatu pdf lub worda (sprawdzić, czy
działa).
1.3.1 Struktura pliku R
Markdown
1.3.1.1 Preambuła w
języku YAML
W górnej części automatycznie utworzonego pliku znajduje się
preambuła w języku YAML. Ograniczona jest dwoma zestawami po 3 minusy,
tj. ---.:
---
title: "Mój tytuł"
author: "M B"
date: "29 11 2022"
output: html_document
---
Poszczególne elementy nie wymagają chyba komentarza.
Przydatne - aby automatycznie wstawiana była data z dnia kompilacji
dokumentu linijka date powinna mieć postać:
Zadanie
Przeczytać o YAML:
1.3.1.2 Opcje
dokumentu
Globalne ustawienia, fragment kodu:
#```{r setup, include=FALSE}
#knitr::opts_chunk$set(echo = TRUE)
#```
Parametr echo odpowiada za wyświetlanie kodu. Zamiana na
FALSE spowoduje, że żaden kod R się nie wyświetli, a jedynie wyniki
działania tych kodów. Taka opcja została wykorzystana w niektórych
zadaniach jako przykładowe wyniki, by pokazać wynik działania kodu, ale
bez samego kodu.
Inne parametry:
#```{r setup, include=FALSE}
#knitr::opts_chunk$set(echo = TRUE, warning=FALSE, message =FALSE, eval=TRUE)
#```
warning - w dokumencie wyjściowym nie będą wypisywane
ostrzeżenia (np. że jakichś danych brakuje)
message - w dokumencie wyjściowym nie będą wypisywane
komunikaty typu że “pakiet blalblabla został zbudowany w wersji
1.1.1).
eval - decyduje, czy kod R zostaje wykonany w dokumencie
R Markdown, czy też nie (sam tekst kodu, bez jego wykonania)
Elementy te można na koniec przetestować, jak już będziemy
mieli jakiś własny kod.
1.3.1.3 Właściwy
dokument
Dokument zawierający właściwą treść - przykładową można skasować
:)
1.3.2 Edytor - tryb
tekstowy i ‘visual’
Za pomocą skrótu klawiaturowego
Ctrl (lewy)+ Shift(lewy)+F4 możemy przełączyć edytor między
trybami tekstowym i ‘visual’. Ten drugi tryb jest nieco bardziej
intuicyjny, pozwala na proste wybranie Nagłówków, pogrubienia, itp
wstawianie obiektów oraz Tabele.
Najprostszy sposób przełączania między trybami to skorzystanie z
przycisków:

Inny sposób przełączanie trybu tekstowego i ‘visual’ to przycisk
trybika koło przycisku Knit:

1.3.2.1 Przydatne:
Wpisanie slasha:
/
w trybie ‘visual’ otwiera menu z dostępnymi elementami do wstawienia
(nagłówki, tabele, kody…)
1.4 Wstawianie kodu w R
do dokumentu
Kod R do dokumentu możemy wstawić na 2 sposoby
1.4.1 Krótka wstawka
W kodzie dokumentu możemy wstawić instrukcję R, w przykładzie
sample(1:6,1), otoczoną znakami `r oraz
` :
`r sample(1:6,1) `
gdzie ten “apostrof” to tzw. grawis, symbol ten najczęściej jest pod
znakiem Esc na klawiaturze Windows (Mac-podobne urządzenia
mają ten klawisz w innym miejscu). Skompilowanie dokumentu skutkuje
tutaj zastąpieniem kodu wynikiem jego działania, tutaj wylosowaniem
liczby z zakresu od 1 do 6.
Zadanie:
Umieścić powyższy kod u siebie w dokumencie. Skompilować dokument.
Sprawdzić “wylosowaną” wartość. Skompilować dokument ponownie -
wylosowana wartość (w założeniu) powinna być inna niż poprzednio (z
prawdopodobieństwem 1/6 możemy dostać znowu to samo - jeśli tak, to
powtórzyć eksperyment).
1.4.2 Długa wstawka
Dłuższy kod R umieszczamy między znacznikami ```{r} -
potrójny grawis, nawias klamrowy i litera r oraz
``` - potrójny grawis:
```{r}
x=seq(0,2*pi,length.out=2*100)
y=sin(x) #komentarz, że liczymy sinusa
plot(x,y)
```
Po kompilacji powinniśmy znaleźć w dokumencie powyższy kod oraz
skutek jego działania, czyli wykres.
Zadanie
Wypróbować powyższy kod w swoim dokumencie.
1.4.3 Zadanie
Jaki efekt będzie, gdy przy r w powyższym kodzie dodamy
echo=FALSE, a dokładniej:
```{r echo=FALSE}
x=seq(0,2*pi,length.out=2*100)
y=sin(x) #komentarz, że liczymy sinusa
plot(x,y)
```
Jest to opcja, gdy chcemy się podzielić wynikiem działania kodu R,
ale sam kod chcemy ukryć.
Podobnie można w danej wstawce ustawić eval,
warning, message w zależności od potrzeb.
1.4.4 Długa wstawka -
guzik w RStudio
Łatwiej wstawić kod za pomocą przycisku
guzik do wstawiania kodu
w górnej części okna, po prawej stronie. Jak widać, można dodawać kod
także w innych językach.
Nie trzeba kompilować całego dokumentu za każdym razem, bieżący blok
kodu możemy “uruchomić” zieloną strzałką po prawej stronie:

pojawi się też wynik działania kodu, tutaj wykres.
Przycisk obok zielnej strzałki:

pozwala na uruchomienie wszystkich bloków kodów powyżej (może się
przydać, gdy inny blok ładuje na przykład biblioteki)
Zadanie:
Umieścić w swoim kodzie wybrany fragment z innego laboratorium (np.
rozwiązanie wybranego zadania z laboratorium 2).
1.4.5 Wstawki R z
błędami
Jeżeli wstawka R zawiera błędy, to cały dokument się nie
skompiluje.
1.5 TeX w R Markdown
Kod TeXa możemy dodać w standardowy sposób, albo otaczając go
pojedynczymi znakami dolara w przypadku wzoru w tekście lub podwójnymi
znakami dolara, w przypadku gdy chcemy wzór wyeksponować:
Tekst z kodem jak niżej:
Funkcja $f \colon \mathbb{R} \to \mathbb{R}$ jest nieparzysta.
wyprodukuje nam linijkę postaci:
“Funkcja \(f \colon \mathbb{R} \to
\mathbb{R}\) jest nieparzysta.”
Przykład wzoru wyeksponowanego:
$$
\left\{
\begin{array}{ccccccr}
x_1 &+&2x_2&+&5x_3&=&-4\\
3x_1 &+&x_2&-&4x_3&=&7\\
4x_1 &+&3x_2&+&x_3&=&3\\
-2x_1&-&2x_2&+&x_3&=&-3
\end{array}
\right.
$$
wyprodukuje nam:
\[
\left\{
\begin{array}{ccccccr}
x_1 &+&2x_2&+&5x_3&=&-4\\
3x_1 &+&x_2&-&4x_3&=&7\\
4x_1 &+&3x_2&+&x_3&=&3\\
-2x_1&-&2x_2&+&x_3&=&-3
\end{array}
\right.
\]
UWAGA: Kliknięcie we wzór uruchomi tryb edycji
równania
Praktyczna wskazówka:
W trybie “visual” RStudio zdarzają się pewne problemy z interpretacją
wstawek TeXa. Może się zdarzyć, że kodu otoczonego dolarami edytor nie
zamieni na wzór, zamiast tego zostanie nam np. coś takiego:
Wzór $\sin x$ - nie chce się wyświetlić prawidłowo.
W trybie edytora tekstowego znajdujemy problem - znaki dolara zostały
zinterpretowane jako symbole, a nie znaczniki końca równania, o czym
świadczą dodatkowe slashe przy tych znakach:
\$\\sin x\$
Rozwiązanie: w trybie tekstowym usunąć niepotrzebne slashe przed
znakami dolara (UWAGA: przy sinusie też jest ekstra
slash, też go trzeba usunąć).
Dzieje się tak, gdy chcemy sobie ułatwić życie i chcąc wstawić
równanie w tekście (niewyeksponowane) od razu wpiszemy oba znaki dolara
(otwierający i zamykający), a następnie wzór między tymi dolarami.
1.6 Wstawianie plików
graficznych
Najłatwiejszy sposób na wstawienie grafiki to przeciągnięcie pliku
graficznego z folderu (bieżącego) do okna RStudio w trybie “visual”
Zadanie:
Wstawić do swojego dokumentu dowolny obrazek
Po kliknięciu wstawionego obrazka mamy dostępne pewne opcje, taka jak
zmiana wysokości i szerokości obrazka, jednostka, lock ratio oraz
… trzy kropki. Trzy kropki dają dostęp do dalszych opcji, w
tym umożliwiają nadanie wykresowi tytułu i opisu:
Link to pozwala na dodanie adresu internetowego,
działającego po kliknięciu obrazka.
1.6.1 Wstawianie grafiki
- drugi sposób
Inny sposób na wstawienie grafiki (oraz innych elementów) to użycie
Insert:

albo ikonki obrazka.
1.6.2 Wstawianie grafiki
- trzeci sposób
Wpisanie w trybie ‘visual’ znaku
/
rozwinie menu, które ma pozycję wstawiania obrazka…
1.7 Wstawianie kodu
W celach demonstracyjnych przydatna jest możliwość wstawienia kodu,
który się nie wykona przy kompilacji (jak w tym pliku w celu
wyjaśnienia, jak wstawić kod R). Kod taki jak niżej:
'r runif(50)'
wstawimy poprzez wybranie code block z pierwszego menu
insert.
Jeżeli powyższy kod wpiszemy bez code block, to przy
kompilacji wykona się on i dostaniemy wynik jego działania
(Zadanie: sprawdzić co się stanie.).
1.8 Preambuła
W moim testowym pliku preambuła ma postać
---
title: "Mój tytuł"
author: "M B"
date: "29 11 2022"
output: html_document
---
Wybrane dodatki - sugeruję dodawanie elementów typu toc, theme itd po
kolei. Ich opisy znajdują się poniżej. Uwaga: preambuła
jest wrażliwa na wcięcia akapitowe itp. formatowanie.
---
title: "Mój tytuł"
author: "M B"
date: "29 11 2022"
output:
html_document:
toc: yes
theme: cerulean
highlight: tango
df_print: paged
code_folding: hide
---
Elementy, które można dodać to m.in.:
toc : yes - toc = table of contents - spis treści, ale
umieszczony jako opcja dla html, tj.:
theme: cerulean zmienia ogólny wygląd dokumentu. Galerie
theme można znaleźć np. pod adresem
niektóre dodatkowe theme wymagają zainstalowania
dodatkowych pakietów i wymagają specjalnego wpisu w preambule, tj.
np:
output:
prettydoc::html_pretty:
theme: cayman
ale dzięki temu wygląd dokumentu staje się ciekawszy.
Zadanie:
przejrzeć materiały spod linku z theme, zmienić
theme swojego dokumentu.
highlight: tango - zmienia kolorowanie składni w pliku
wyjściowym. Dostępne:
default, tango, pygments,
kate, monochrome, espresso,
zenburn, haddock, breezedark oraz
textmate
df_print - sposób wyświetlania ramek danych.
Zadanie:
Wstawić ramkę danych iris do swojego dokumentu (bez
definiowania df_print w preambule). W dokumencie wyjściowym
powinna pojawić się cała ramka.
Sprawdzić działanie opcji df_print na argumentach
kable, tibble, paged.
code_folding: hide powoduje, że kod R jest umieszczony w
dokumencie, ale jest ukryty. Czytelnik dokumentu może “odkryć” ten kod.
Alternatywna wartość to code_folding: show. Wtedy czytelnik
dokumentu widzi od razu kod programu, ale może go ukryć
1.9 R Markdown w trybie
tekstowym
Za odpowiednie formatowanie tekstu w dokumencie wyjściowym
odpowiedzialne są odpowiednie znaczniki (znaczniki działają też w trybie
‘visual’):
poprzedzenie tekstu znakiem # zmieni tekst na tytuł
rozdziału
poprzedzenie tekstu znakiem ## zmieni tekst na tytuł
podrozdziału
itd aż do 6x #
wyróżnienie elementu następuje poprzez otoczenie go znakami
gwiazdki * (pojedynczymi, podwójnymi…)
otoczenie tekstu grawisami powoduje wyeksponowanie tekstu (szare
pole)
wyliczenie powstaje poprzez rozpoczęcie nowej linii od gwiazdki
* lub minusa -
link do strony www dodajemy poprzedzając go http://
lub https://
link do strony www jako hiperłącze tekstu możemy uzyskać poprzez
otoczenie fragmentu tekstu nawiasami [...], a sam adres www
otaczamy nawiasami (...), jak w przykładzie.
[galeria theme](https://www.datadreaming.org/posts/2018-04-11-r-markdown-theme-gallery/2018-04-11-r-markdown-theme-gallery)
1.10 Markdown i kod
html
Możliwe jest użycie wielu elementów html, np. do zmiany czcionki czy
jej koloru:
<span style="font-family: 'Comic Sans MS', 'Comic Sans'; color:red">Comic Sans przykład</span>
<span style="font-family: 'Times New Roman', serif; color:green">Times New Roman przykład</span>
<span style="font-family: Verdana; color:blue">Verdana przykład</span>
Zwykły przykład
da nam:
Comic
Sans przykład Times
New Roman przykład Verdana przykład Zwykły
przykład
a kod
<ul>
<li>jeden</li>
<li>dwa</li>
<li>trzy</li>
</ul>
<ol style="list-style-type: lower-alpha;">
<li>lista a</li>
<li>lista b</li>
<li>lista c</li>
</ol>
da nam
-
jeden
-
dwa
-
trzy
-
lista a
-
lista b
-
lista c
1.11 Markdown a TeX i
pdf
Powyżej umówiliśmy niektóre opcje HTML jako formatu wyjściowego. W
przypadku pdf po dodatkowe opcje odsyłam do materiałów
https://bookdown.org/yihui/rmarkdown/pdf-document.html
warto zwrócić uwagę na sekcję dotyczącą keep_tex, która
pozwala na zapisanie kodu TeXowego wygenerowanego dokumentu pdf - może
być przydatne np. do pracy magisterskiej.
Poza kodem zapisywane są też wykresy/rysunki, co też może być
przydatne (oczywiście, każdy rysunek wygenerowany w R też możemy zapisać
do pliku bezpośrednio, nie potrzebny jest Markdown).
1.12 Markdown a beamer
(TeX)
Beamer to klasa TeXa służąca do przygotowywania prezentacji, więcej
na
https://pl.wikipedia.org/wiki/Beamer_(LaTeX)
W przypadku R Mardown możemy wybrać opcje Presentation a
następnie format pdf beamer. W nowym dokumencie znajdzie
się przykład, który jako podstawa powinien zupełnie wystarczyć.
Mankament - standardowo generowana prezentacja jest “brzydka”.
2 Zadania
2.1 Zadanie 1
Przygotować dokument R Markdown na temat całki Riemanna korzystając z
artykułu wikipedii, z uwzględnieniem elementów:
tytuł dokumentu, autor, data itp
wybrany theme żeby było kolorowo
podanie źródła danych/materiałów
podział na sekcje/podsekcje (ze dwie)
formatowanie tekstu
wzory - mają być ładne, texowe
wstawić obrazek (z wiki, podając źródło)
3 Dodatkowe
przykłady
Preambuła użyta do wygenerowania laboratoriów ma postać:
---
title: 'Laboratorium 9 - R Markdown'
author: "Michał Braś"
date: "`r format(Sys.time(), '%d %B, %Y')`"
output:
prettydoc::html_pretty:
theme: cayman
toc: yes
# theme: cerulean
highlight: vignette
number_sections: true
#df_print: paged
#code_folding: hide
---
Dodatkowy kod css, użyty na początku pliku, do
formatowania pewnych zachowań użytego szablonu ma postać:
.header-section-number::after {
content: ".";
}
.toc-section-number::after {
content: ".";
}
.level1, .level2, .level3, .level4 {
display: inline-block;
}
W powyższym kodzie
.header-section-number odpowiada za dodanie kropki
na końcu numeru rozdziału
.toc-section-number odpowiada za tą samą kropkę co
wyżej, ale w spisie treści
.level1, .level2, .level3, .level4 odpowiada za
formatowanie znacznika rozwijania sekcji
Rozwijane sekcje zostały zrobione poprzez użycie poniższego kodu:
1 R Markdown
1.1 Mardown
“Markdown is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber and Aaron Swartz created Markdown in 2004 as a markup language that is appealing to human readers in its source code form Markdown is widely used in blogging, instant messaging, online forums, collaborative software, documentation pages, and readme files.”
1.2 R Markdown, knit
Pozwala na elastyczne łączenie tekstu, Markdown, TeXa, R i html w jednym pliku i utworzenie dokumentu wyjściowego w formacie m.in. html i pdf (wszystkie laboratoria przygotowane zostały w ten sposób).
1.3 Pierwszy plik R Markdown
Z menu File wybieramy New File, a następnie
pozycję R Markdown
Powinien otworzyć się okno:
gdzie możemy nadać Tytuł tworzonego dokumentu oraz autora. Możemy też wybrać rodzaj dokumentu wyjściowego (zostawmy HTML, PDF wymaga zainstalowanego MiKTeXa - zobaczymy na miejscu czy działa).
Powinien utworzyć się nowy dokument, który obowiązkowo zapisujemy pod wybraną nazwą w osobnym folderze. Będziemy generować dodatkowe pliki, które automatycznie zapiszą się w tym folderze, więc wybór “Pulpitu” nie jest dobrym wyborem (choć nie zakazanym, po prostu zły pomysł). Powinno pojawić się nowe okno z przykładową treścią:
Po zapisaniu pliku klikamy przycisk
Knit:
aby skompilować dokument. Po chwili powinno się pojawić okno wbudowanej przeglądarki z naszym dokumentem. Dokument ten (o ile nic nie zostało zmienione) powinien się też zapisać w tym samym folderze - plik HTML.
Obok przycisku Knit znajduje się strzałka - umożliwia
kompilacje pliku do formatu pdf lub worda (sprawdzić, czy
działa).
1.3.1 Struktura pliku R Markdown
1.3.1.1 Preambuła w języku YAML
W górnej części automatycznie utworzonego pliku znajduje się
preambuła w języku YAML. Ograniczona jest dwoma zestawami po 3 minusy,
tj. ---.:
---
title: "Mój tytuł"
author: "M B"
date: "29 11 2022"
output: html_document
---
Poszczególne elementy nie wymagają chyba komentarza.
Przydatne - aby automatycznie wstawiana była data z dnia kompilacji
dokumentu linijka date powinna mieć postać:
Zadanie
Przeczytać o YAML:
1.3.1.2 Opcje dokumentu
Globalne ustawienia, fragment kodu:
#```{r setup, include=FALSE}
#knitr::opts_chunk$set(echo = TRUE)
#```
Parametr echo odpowiada za wyświetlanie kodu. Zamiana na
FALSE spowoduje, że żaden kod R się nie wyświetli, a jedynie wyniki
działania tych kodów. Taka opcja została wykorzystana w niektórych
zadaniach jako przykładowe wyniki, by pokazać wynik działania kodu, ale
bez samego kodu.
Inne parametry:
#```{r setup, include=FALSE}
#knitr::opts_chunk$set(echo = TRUE, warning=FALSE, message =FALSE, eval=TRUE)
#```
warning - w dokumencie wyjściowym nie będą wypisywane
ostrzeżenia (np. że jakichś danych brakuje)
message - w dokumencie wyjściowym nie będą wypisywane
komunikaty typu że “pakiet blalblabla został zbudowany w wersji
1.1.1).
eval - decyduje, czy kod R zostaje wykonany w dokumencie
R Markdown, czy też nie (sam tekst kodu, bez jego wykonania)
Elementy te można na koniec przetestować, jak już będziemy mieli jakiś własny kod.
1.3.1.3 Właściwy dokument
Dokument zawierający właściwą treść - przykładową można skasować :)
1.3.2 Edytor - tryb tekstowy i ‘visual’
Za pomocą skrótu klawiaturowego
Ctrl (lewy)+ Shift(lewy)+F4 możemy przełączyć edytor między
trybami tekstowym i ‘visual’. Ten drugi tryb jest nieco bardziej
intuicyjny, pozwala na proste wybranie Nagłówków, pogrubienia, itp
wstawianie obiektów oraz Tabele.
Najprostszy sposób przełączania między trybami to skorzystanie z przycisków:
Inny sposób przełączanie trybu tekstowego i ‘visual’ to przycisk
trybika koło przycisku Knit:
1.3.2.1 Przydatne:
Wpisanie slasha:
/
w trybie ‘visual’ otwiera menu z dostępnymi elementami do wstawienia (nagłówki, tabele, kody…)
1.4 Wstawianie kodu w R do dokumentu
Kod R do dokumentu możemy wstawić na 2 sposoby
1.4.1 Krótka wstawka
W kodzie dokumentu możemy wstawić instrukcję R, w przykładzie
sample(1:6,1), otoczoną znakami `r oraz
` :
`r sample(1:6,1) `
gdzie ten “apostrof” to tzw. grawis, symbol ten najczęściej jest pod
znakiem Esc na klawiaturze Windows (Mac-podobne urządzenia
mają ten klawisz w innym miejscu). Skompilowanie dokumentu skutkuje
tutaj zastąpieniem kodu wynikiem jego działania, tutaj wylosowaniem
liczby z zakresu od 1 do 6.
Zadanie:
Umieścić powyższy kod u siebie w dokumencie. Skompilować dokument. Sprawdzić “wylosowaną” wartość. Skompilować dokument ponownie - wylosowana wartość (w założeniu) powinna być inna niż poprzednio (z prawdopodobieństwem 1/6 możemy dostać znowu to samo - jeśli tak, to powtórzyć eksperyment).
1.4.2 Długa wstawka
Dłuższy kod R umieszczamy między znacznikami ```{r} -
potrójny grawis, nawias klamrowy i litera r oraz
``` - potrójny grawis:
```{r}
x=seq(0,2*pi,length.out=2*100)
y=sin(x) #komentarz, że liczymy sinusa
plot(x,y)
```
Po kompilacji powinniśmy znaleźć w dokumencie powyższy kod oraz skutek jego działania, czyli wykres.
Zadanie
Wypróbować powyższy kod w swoim dokumencie.
1.4.3 Zadanie
Jaki efekt będzie, gdy przy r w powyższym kodzie dodamy
echo=FALSE, a dokładniej:
```{r echo=FALSE}
x=seq(0,2*pi,length.out=2*100)
y=sin(x) #komentarz, że liczymy sinusa
plot(x,y)
```
Jest to opcja, gdy chcemy się podzielić wynikiem działania kodu R, ale sam kod chcemy ukryć.
Podobnie można w danej wstawce ustawić eval,
warning, message w zależności od potrzeb.
1.4.4 Długa wstawka - guzik w RStudio
Łatwiej wstawić kod za pomocą przycisku
w górnej części okna, po prawej stronie. Jak widać, można dodawać kod także w innych językach.
Nie trzeba kompilować całego dokumentu za każdym razem, bieżący blok kodu możemy “uruchomić” zieloną strzałką po prawej stronie:
pojawi się też wynik działania kodu, tutaj wykres.
Przycisk obok zielnej strzałki:
pozwala na uruchomienie wszystkich bloków kodów powyżej (może się przydać, gdy inny blok ładuje na przykład biblioteki)
Zadanie:
Umieścić w swoim kodzie wybrany fragment z innego laboratorium (np. rozwiązanie wybranego zadania z laboratorium 2).
1.4.5 Wstawki R z błędami
Jeżeli wstawka R zawiera błędy, to cały dokument się nie skompiluje.
1.5 TeX w R Markdown
Kod TeXa możemy dodać w standardowy sposób, albo otaczając go pojedynczymi znakami dolara w przypadku wzoru w tekście lub podwójnymi znakami dolara, w przypadku gdy chcemy wzór wyeksponować:
Tekst z kodem jak niżej:
Funkcja $f \colon \mathbb{R} \to \mathbb{R}$ jest nieparzysta.
wyprodukuje nam linijkę postaci:
“Funkcja \(f \colon \mathbb{R} \to \mathbb{R}\) jest nieparzysta.”
Przykład wzoru wyeksponowanego:
$$
\left\{
\begin{array}{ccccccr}
x_1 &+&2x_2&+&5x_3&=&-4\\
3x_1 &+&x_2&-&4x_3&=&7\\
4x_1 &+&3x_2&+&x_3&=&3\\
-2x_1&-&2x_2&+&x_3&=&-3
\end{array}
\right.
$$
wyprodukuje nam:
\[ \left\{ \begin{array}{ccccccr} x_1 &+&2x_2&+&5x_3&=&-4\\ 3x_1 &+&x_2&-&4x_3&=&7\\ 4x_1 &+&3x_2&+&x_3&=&3\\ -2x_1&-&2x_2&+&x_3&=&-3 \end{array} \right. \]
UWAGA: Kliknięcie we wzór uruchomi tryb edycji równania
Praktyczna wskazówka:
W trybie “visual” RStudio zdarzają się pewne problemy z interpretacją wstawek TeXa. Może się zdarzyć, że kodu otoczonego dolarami edytor nie zamieni na wzór, zamiast tego zostanie nam np. coś takiego:
Wzór $\sin x$ - nie chce się wyświetlić prawidłowo.
W trybie edytora tekstowego znajdujemy problem - znaki dolara zostały zinterpretowane jako symbole, a nie znaczniki końca równania, o czym świadczą dodatkowe slashe przy tych znakach:
\$\\sin x\$
Rozwiązanie: w trybie tekstowym usunąć niepotrzebne slashe przed znakami dolara (UWAGA: przy sinusie też jest ekstra slash, też go trzeba usunąć).
Dzieje się tak, gdy chcemy sobie ułatwić życie i chcąc wstawić równanie w tekście (niewyeksponowane) od razu wpiszemy oba znaki dolara (otwierający i zamykający), a następnie wzór między tymi dolarami.
1.6 Wstawianie plików graficznych
Najłatwiejszy sposób na wstawienie grafiki to przeciągnięcie pliku graficznego z folderu (bieżącego) do okna RStudio w trybie “visual”
Zadanie:
Wstawić do swojego dokumentu dowolny obrazek
Po kliknięciu wstawionego obrazka mamy dostępne pewne opcje, taka jak
zmiana wysokości i szerokości obrazka, jednostka, lock ratio oraz
… trzy kropki. Trzy kropki dają dostęp do dalszych opcji, w
tym umożliwiają nadanie wykresowi tytułu i opisu:
Link to pozwala na dodanie adresu internetowego,
działającego po kliknięciu obrazka.
1.6.1 Wstawianie grafiki - drugi sposób
Inny sposób na wstawienie grafiki (oraz innych elementów) to użycie
Insert:
albo ikonki obrazka.
1.6.2 Wstawianie grafiki - trzeci sposób
Wpisanie w trybie ‘visual’ znaku
/
rozwinie menu, które ma pozycję wstawiania obrazka…
1.7 Wstawianie kodu
W celach demonstracyjnych przydatna jest możliwość wstawienia kodu, który się nie wykona przy kompilacji (jak w tym pliku w celu wyjaśnienia, jak wstawić kod R). Kod taki jak niżej:
'r runif(50)'
wstawimy poprzez wybranie code block z pierwszego menu
insert.
Jeżeli powyższy kod wpiszemy bez code block, to przy
kompilacji wykona się on i dostaniemy wynik jego działania
(Zadanie: sprawdzić co się stanie.).
1.8 Preambuła
W moim testowym pliku preambuła ma postać
---
title: "Mój tytuł"
author: "M B"
date: "29 11 2022"
output: html_document
---
Wybrane dodatki - sugeruję dodawanie elementów typu toc, theme itd po kolei. Ich opisy znajdują się poniżej. Uwaga: preambuła jest wrażliwa na wcięcia akapitowe itp. formatowanie.
---
title: "Mój tytuł"
author: "M B"
date: "29 11 2022"
output:
html_document:
toc: yes
theme: cerulean
highlight: tango
df_print: paged
code_folding: hide
---
Elementy, które można dodać to m.in.:
toc : yes - toc = table of contents - spis treści, ale
umieszczony jako opcja dla html, tj.:
theme: cerulean zmienia ogólny wygląd dokumentu. Galerie
theme można znaleźć np. pod adresem
niektóre dodatkowe theme wymagają zainstalowania
dodatkowych pakietów i wymagają specjalnego wpisu w preambule, tj.
np:
output:
prettydoc::html_pretty:
theme: cayman
ale dzięki temu wygląd dokumentu staje się ciekawszy.
Zadanie:
przejrzeć materiały spod linku z theme, zmienić
theme swojego dokumentu.
highlight: tango - zmienia kolorowanie składni w pliku
wyjściowym. Dostępne:
default, tango, pygments,
kate, monochrome, espresso,
zenburn, haddock, breezedark oraz
textmate
df_print - sposób wyświetlania ramek danych.
Zadanie:
Wstawić ramkę danych iris do swojego dokumentu (bez
definiowania df_print w preambule). W dokumencie wyjściowym
powinna pojawić się cała ramka.
Sprawdzić działanie opcji df_print na argumentach
kable, tibble, paged.
code_folding: hide powoduje, że kod R jest umieszczony w
dokumencie, ale jest ukryty. Czytelnik dokumentu może “odkryć” ten kod.
Alternatywna wartość to code_folding: show. Wtedy czytelnik
dokumentu widzi od razu kod programu, ale może go ukryć
1.9 R Markdown w trybie tekstowym
Za odpowiednie formatowanie tekstu w dokumencie wyjściowym odpowiedzialne są odpowiednie znaczniki (znaczniki działają też w trybie ‘visual’):
poprzedzenie tekstu znakiem
#zmieni tekst na tytuł rozdziałupoprzedzenie tekstu znakiem
##zmieni tekst na tytuł podrozdziałuitd aż do
6x #
wyróżnienie elementu następuje poprzez otoczenie go znakami gwiazdki
*(pojedynczymi, podwójnymi…)otoczenie tekstu grawisami powoduje wyeksponowanie tekstu (szare pole)
wyliczenie powstaje poprzez rozpoczęcie nowej linii od gwiazdki
*lub minusa-link do strony www dodajemy poprzedzając go
http://lubhttps://link do strony www jako hiperłącze tekstu możemy uzyskać poprzez otoczenie fragmentu tekstu nawiasami
[...], a sam adres www otaczamy nawiasami(...), jak w przykładzie.
[galeria theme](https://www.datadreaming.org/posts/2018-04-11-r-markdown-theme-gallery/2018-04-11-r-markdown-theme-gallery)
1.10 Markdown i kod html
Możliwe jest użycie wielu elementów html, np. do zmiany czcionki czy jej koloru:
<span style="font-family: 'Comic Sans MS', 'Comic Sans'; color:red">Comic Sans przykład</span>
<span style="font-family: 'Times New Roman', serif; color:green">Times New Roman przykład</span>
<span style="font-family: Verdana; color:blue">Verdana przykład</span>
Zwykły przykład
da nam:
Comic Sans przykład Times New Roman przykład Verdana przykład Zwykły przykład
a kod
<ul>
<li>jeden</li>
<li>dwa</li>
<li>trzy</li>
</ul>
<ol style="list-style-type: lower-alpha;">
<li>lista a</li>
<li>lista b</li>
<li>lista c</li>
</ol>
da nam
- jeden
- dwa
- trzy
- lista a
- lista b
- lista c
1.11 Markdown a TeX i pdf
Powyżej umówiliśmy niektóre opcje HTML jako formatu wyjściowego. W przypadku pdf po dodatkowe opcje odsyłam do materiałów
https://bookdown.org/yihui/rmarkdown/pdf-document.html
warto zwrócić uwagę na sekcję dotyczącą keep_tex, która
pozwala na zapisanie kodu TeXowego wygenerowanego dokumentu pdf - może
być przydatne np. do pracy magisterskiej.
Poza kodem zapisywane są też wykresy/rysunki, co też może być przydatne (oczywiście, każdy rysunek wygenerowany w R też możemy zapisać do pliku bezpośrednio, nie potrzebny jest Markdown).
1.12 Markdown a beamer (TeX)
Beamer to klasa TeXa służąca do przygotowywania prezentacji, więcej na
https://pl.wikipedia.org/wiki/Beamer_(LaTeX)
W przypadku R Mardown możemy wybrać opcje Presentation a
następnie format pdf beamer. W nowym dokumencie znajdzie
się przykład, który jako podstawa powinien zupełnie wystarczyć.
Mankament - standardowo generowana prezentacja jest “brzydka”.
2 Zadania
2.1 Zadanie 1
Przygotować dokument R Markdown na temat całki Riemanna korzystając z artykułu wikipedii, z uwzględnieniem elementów:
tytuł dokumentu, autor, data itp
wybrany
themeżeby było kolorowopodanie źródła danych/materiałów
podział na sekcje/podsekcje (ze dwie)
formatowanie tekstu
wzory - mają być ładne, texowe
wstawić obrazek (z wiki, podając źródło)
3 Dodatkowe przykłady
Preambuła użyta do wygenerowania laboratoriów ma postać:
---
title: 'Laboratorium 9 - R Markdown'
author: "Michał Braś"
date: "`r format(Sys.time(), '%d %B, %Y')`"
output:
prettydoc::html_pretty:
theme: cayman
toc: yes
# theme: cerulean
highlight: vignette
number_sections: true
#df_print: paged
#code_folding: hide
---Dodatkowy kod css, użyty na początku pliku, do
formatowania pewnych zachowań użytego szablonu ma postać:
.header-section-number::after {
content: ".";
}
.toc-section-number::after {
content: ".";
}
.level1, .level2, .level3, .level4 {
display: inline-block;
}W powyższym kodzie
.header-section-numberodpowiada za dodanie kropki na końcu numeru rozdziału.toc-section-numberodpowiada za tą samą kropkę co wyżej, ale w spisie treści.level1, .level2, .level3, .level4odpowiada za formatowanie znacznika rozwijania sekcji
Rozwijane sekcje zostały zrobione poprzez użycie poniższego kodu: