Meet the new pdxrlang organizers!
Sophie Yang
Marley Buchman
Ted Laderas
John Smith
S3 Objects
Scott Chamberlain (
@sckottie)
rOpenSci
S3 objects
R's first and
simplest OO (Object Oriented) system
S3 is informal and ad hoc, but it has a certain elegance
in its minimalism: you can’t take away any part of it
and still have a useful OO system
S3 - when to use S3 generics/methods
-
inputs can have many different classes
-
you want to do different things with different
classes
-
you want something that's light weight
-
you want to build on top of a base R generic
(e.g, plot
)
S3 - beware!
-
consider S3 failure behavior - see
.default
-
parameters should be consistent across S3
methods
-
pay attention to whether methods on generics are
exported in your pkg
-
as a user: don't call S3 methods directly, call
the generic
-
no validation of checking of contents
-
extended generic methods of base functions from
diff. pkgs can conflict!
-
S3 classes can be easily dropped/lost (next
slide)