In packages like marray and limma, when complex objects are loaded, they contain "members variables" that are accessed using the @ symbol. What does this mean and how does it differ from the $ symbol?
Asked
Active
Viewed 1.4k times
3 Answers
41
See ?'@'
:
Description:
Extract the contents of a slot in a object with a formal (S4) class structure.
Usage:
object@name
...
The S language has two object systems, known informally as S3 and S4.
- S3 objects, classes and methods have been available in R from the beginning, they are informal, yet very interactive. S3 was first described in the White Book (Statistical Models in S).
- S3 is not a real class system, it mostly is a set of naming conventions.
- S4 objects, classes and methods are much more formal and
rigorous, hence less interactive. S4 was first described
in the Green Book (Programming with Data). In R it is
available through the
methods
package, attached by default since version 1.7.0.
See also this document: S4 Classes and Methods.

rcs
- 67,191
- 22
- 172
- 153
10
As the others have said, the @ symbol is used with S4 classes, but here is a note from Google's R Style Guide: "Use S3 objects and methods unless there is a strong reason to use S4 objects or methods."

ramhiser
- 3,342
- 3
- 23
- 29
5
You will want to read up on S4 classes which use the @ symbol.

Dirk Eddelbuettel
- 360,940
- 56
- 644
- 725