Je me demande quelle est la différence entre la "composante/extraction à sous" (via ?Syntax
) opérateurs $
(signe dollar) et @
(arobase) R.
Voici un exemple avec $
:
yo=data.frame(c(1:10), c(rnorm(10,0,1)))
yo$c.1.10.
impressions:
[1] 1 2 3 4 5 6 7 8 9 10
[email protected]
Error: trying to get slot "c.1.10." from an object (class "data.frame") that is not an S4 object
Voici un exemple avec @
:
setClass("track", representation(x="numeric", y="numeric"))
myTrack <- new("track", x = -4:4, y = exp(-4:4))
[email protected]
impressions:
[1] -4 -3 -2 -1 0 1 2 3 4
myTrack$x
Error in myTrack$x : $ operator not defined for this S4 class
Dans les deux cas, pourquoi un travail et pas l'autre?
Un autre exemple est le suivant du paquet SoDA
dans R, dans la fonction geoXY
:
library(SoDA)
xy <- geoXY([email protected], [email protected], unit = 1000)
plot(xy[,1], xy[,2], asp = 1)
@ est spécifiquement pour les objets S4. – joran