Alternative S4 Constructor

Usage

new2(class, ...)

Arguments

class
Class name to instanciate
...
extra arguments from which slot values are extracted by exact matching of names.

Description

An alternative version of new to create objects based on a list of values.

Examples

setClass('A', contain='character', representation(x='numeric', y='character'))
# identical behaviour with standard calls
identical(new('A'), new2('A'))
[1] TRUE
identical(new('A', x=1), new2('A', x=1))
[1] TRUE
# but if passing that are names not slots
identical(new('A'), new2('A', b=1))
[1] TRUE
identical(new('A', x=1), new2('A', x=1, b=3))
[1] TRUE
identical(new('A', x=1), new2('A', x=1, b=3))
[1] TRUE
# standard `new` would coerce first unnamed argument into parent of 'A' (i.e. 'character')
new('A', list(x=1))
An object of class "A" [1] "1" Slot "x": numeric(0) Slot "y": character(0)
new('A', list(x=1, y='other'))
An object of class "A" [1] "1" "other" Slot "x": numeric(0) Slot "y": character(0)
# `new2` rather use it to initialise the slots it can find in the list
identical(new('A', x=1), new2('A', list(x=1)))
[1] TRUE
identical(new('A', x=1, y='other'), new2('A', list(x=1, y='other')))
[1] TRUE