1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Objektově orientované programování s S3 a R6 v R

Connected

Cvičení

Co se skrývá v názvu?

S3 používá striktní konvenci pojmenování: všechny S3 metody mají název ve tvaru generic.class.

Opačné tvrzení však neplatí: funkce může mít v názvu tečku, aniž by byla S3 metodou. Tak je tomu u mnoha funkcí, které existují od počátků jazyka S. Například all.equal() (docs) je ve skutečnosti S3 generická funkce, nikoliv metoda. (To je dobrý příklad toho, proč může být leopard.case matoucí.)

Zda je funkce S3 generická, zjistíš voláním is_s3_generic() (docs) z balíčku pryr. Můžeš ji také vypsat (zadáním jejího názvu do konzole) a zkontrolovat, jestli volá UseMethod().

Podobně ověříš, zda je funkce S3 metodou, pomocí is_s3_method() (docs) z balíčku pryr. Například:

library(pryr)
is_s3_generic("t")           # generic transpose function
is_s3_method("t.data.frame") # transpose method for data.frames
is_s3_method("t.test")       # a function for Student's t-tests 

Která tvrzení jsou pravdivá?

  1. is.complex() (docs) je metoda generické funkce is, která pracuje s objekty typu complex.
  2. seq.Date() (docs) je metoda generické funkce seq, která pracuje s objekty typu Date.
  3. is.na.data.frame() (docs) je metoda generické funkce is.na, která pracuje s objekty typu data.frame.
  4. sort() (docs) je generická funkce.
  5. order() (docs) je generická funkce.

Pokyny

50 XP

Možné odpovědi