1
Vývoj / Čo znamená v R atribut triedy v structure()?
« kdy: 12. 01. 2024, 18:46:42 »
Vazeni R-Gurus,
Potreboval som vytvoriť v R funkciu podobnú vstavanej acf() (= Auto Correlation Function).
Najprv som sa pozrel na zdroj build-in funkcie acf() pomocou prikazu
Potom som vytvoril svoju funkciu s názvom my_acf() s takmer rovnakou strukturou vysledkov, aku ma povodné acf(), t.j.:
Ale nepodarilo sa mi to dobre.
Zatial co povodna funkcia acf() k tomuto vstupnemu vektoru
vrati takyto pekny vystup
tak moja funkcia my_acf() my vratila iba nieco taketo nepekne
Potom som si vsimol, ze vo vysledku mojej funkcie nemam atribut class="acf"
Pridal som ho a teraz je to uz OK:
Teraz sa vystup mojej funkcie my_acf() zhoduje s vystupom vstavanej funkcie acf().
Ale aj tak nechapem, ako R vie, ze ma urobit speciálny vystup pre triedu „acf“.
Vie mi niekto poradit kde a akym sposobom je to nakodovane ?
Potreboval som vytvoriť v R funkciu podobnú vstavanej acf() (= Auto Correlation Function).
Najprv som sa pozrel na zdroj build-in funkcie acf() pomocou prikazu
Kód: [Vybrat]
getAnywhere(plot.acf)
Potom som vytvoril svoju funkciu s názvom my_acf() s takmer rovnakou strukturou vysledkov, aku ma povodné acf(), t.j.:
Kód: [Vybrat]
> str(my_acf(x))
List of 6
$ acf : num [1:4, 1, 1] 1 0.25 -0.3 -0.45
$ type : chr "correlation"
$ n.used: int 4
$ lag : num [1:4, 1, 1] 0 1 2 3
$ series: chr "x"
$ snames: NULL
> str(acf(x))
List of 6
$ acf : num [1:4, 1, 1] 1 0.25 -0.3 -0.45
$ type : chr "correlation"
$ n.used: int 4
$ lag : num [1:4, 1, 1] 0 1 2 3
$ series: chr "x"
$ snames: NULL
- attr(*, "class")= chr "acf"
Ale nepodarilo sa mi to dobre.
Zatial co povodna funkcia acf() k tomuto vstupnemu vektoru
Kód: [Vybrat]
> x <- c(1, 2, 3, 4)
vrati takyto pekny vystup
Kód: [Vybrat]
> y <- acf(x)
> y
Autocorrelations of series ‘x’, by lag
0 1 2 3
1.00 0.25 -0.30 -0.45
tak moja funkcia my_acf() my vratila iba nieco taketo nepekne
Kód: [Vybrat]
> y <- my_acf(x)
> y
$acf
, , 1
[,1]
[1,] 1.00
[2,] 0.25
[3,] -0.30
[4,] -0.45
$type
[1] "correlation"
$n.used
[1] 4
$lag
, , 1
[,1]
[1,] 0
[2,] 1
[3,] 2
[4,] 3
$series
[1] "x"
$snames
NULL
Potom som si vsimol, ze vo vysledku mojej funkcie nemam atribut class="acf"
Pridal som ho a teraz je to uz OK:
Kód: [Vybrat]
> y <- my_acf(x)
> y
Autocorrelations of series ‘x’, by lag
0 1 2 3
1.00 0.25 -0.30 -0.45
> y <- acf(x)
> y
Autocorrelations of series ‘x’, by lag
0 1 2 3
1.00 0.25 -0.30 -0.45
Teraz sa vystup mojej funkcie my_acf() zhoduje s vystupom vstavanej funkcie acf().
Ale aj tak nechapem, ako R vie, ze ma urobit speciálny vystup pre triedu „acf“.
Vie mi niekto poradit kde a akym sposobom je to nakodovane ?