Funkce \ Porozumění cizímu kódu

NPFL112
2020-02-24

Funkce (v R)

  • built-in functions: instalují se rovnou s R
  • knihovny s funkcemi:
    • jednou nainstalovat
    • při každém sezení připojit
  • vlastní funkce:
    • v kódu jednoho skriptu
    • ve zvláštním souboru, zavolat ze souboru se skriptem
  • repozitář oficiálních knihoven: CRAN https://cran.r-project.org/

Popis funkcí v nápovědě

tolower("ABC")
[1] "abc"
help("tolower")

nebo

?tolower

Nápověda se objeví v listu Help v pravém dolním okně

Nápověda k funkci - Vstupní argumenty

plot of chunk unnamed-chunk-4

v builtin balíčku base, spolu s funkcí chartr - jsou vysvětleny pohromadě

  • Argumenty požadované na vstupu: tolower chce znakový vektor nebo něco, z čeho si znakový vektor umí vytvořit sama.

Nápověda k funkci - Výstup z funkce

plot of chunk unnamed-chunk-5

Nápověda k funkci - Příklady

plot of chunk unnamed-chunk-6

Zrady nápovědy

  • Musíme znát konkrétní název funkce.
  • Nápověda zná vždy jen funkce knihoven, které jsou zrovna připojené.

Knihovny

  • Připojit knihovnu: library(název knihovny v uvozovkách nebo bez nich)
  • Nainstalovat knihovnu, když ji nemáme: install.packages(název)
  • V RStudiu panel Packages
  • Sledovat hlášky v konzoli (něco odsouhlasit)

Ještě k argumentům funkce

sample(x, size, replace=FALSE, prob=NULL)

my_sample <- 1:2
set.seed(885) #aby se nahodny generator cisel choval vzdy stejne 
sample(x = my_sample, size = 2)
[1] 2 1
sample(my_sample, 2)
[1] 1 2
sample(size = 2, x = my_sample) #musime pojmenovat,kdyz prehodime poradi
[1] 1 2
set.seed(8888)
sample(my_sample, 3, replace = TRUE) #bez nahrazeni nejde, vzorek je mensi
[1] 2 1 2
sample(my_sample, 10, replace = TRUE, prob = c(1,0))
 [1] 1 1 1 1 1 1 1 1 1 1
sample(my_sample, 10, replace = TRUE, prob = c(0.7,0.3))
 [1] 2 2 1 1 1 1 2 1 2 1

Jak se píše vlastní funkce

moje_funkce <- function(argumenty na vstupu) {
  tady nejaky kod
}

Funkce vygeneruje hromadnou vstupenku podle počtu lidí. Přednastavené hodnoty argumentů.

vytiskni_vstupenku <- function(pocet_osob = 1, cena = 100, 
                        sleva_proc = 50, 
                        od_kolika_osob = 4) {
  vyse_slevy <- 0
  cena <- cena
  if (pocet_osob >= od_kolika_osob) {
    vyse_slevy <- sleva_proc * 0.01 * cena
    cena <- cena - vyse_slevy
  } 
  cat("Festival KOKOKO", "\n", "Osob: ", pocet_osob, "\n", "Sleva Kč: ", vyse_slevy, "\n", "Cena po slevě Kč: ", cena)
}  
vytiskni_vstupenku() 
Festival KOKOKO 
 Osob:  1 
 Sleva Kč:  0 
 Cena po slevě Kč:  100
vytiskni_vstupenku(10, 1000)
Festival KOKOKO 
 Osob:  10 
 Sleva Kč:  500 
 Cena po slevě Kč:  500

Cizí kód: Zásoba cloze testů

caption

  • Koherentní textové úryvky
  • Co nejvíc výskytů předložek (tokens)
  • Co nejvíc různých předložek (types)
  • Automatické porovnání odpovědí s originálem

Požadovaný výstup

  • Excelová tabulka
  • Každé slovo na jednom řádku
  • Ke každému slovu slovní druh
  • Místo na studentovu odpověď
processing file: 2020_02_28_script_to_read_through.Rpres
── Attaching packages ─────────────────────────────── tidyverse 1.2.1 ──
✔ ggplot2 3.2.1.9000     ✔ purrr   0.3.2     
✔ tibble  2.1.3          ✔ dplyr   0.8.3     
✔ tidyr   0.8.3          ✔ stringr 1.4.0     
✔ readr   1.3.1          ✔ forcats 0.4.0     
── Conflicts ────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
Quitting from lines 146-149 (2020_02_28_script_to_read_through.Rpres) 
Error: '~/edu/r/2020_datasci_edu/cloze_prepositions_doyle11.tsv' does not exist.
Execution halted