The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
In base R, objects lose attributes in many common operations such as:
subset, [, [[<-, append, etc. or when inserted into or extracted from
recursive (list-like) objects such as data frames or data tables.
Marking objects ‘sticky’, make attributes resilient to these operations.
In essence, sticky makes object behave more like objects in other
languages whose attributes are preserved. There isn’t much to the
package. sticky
/unstick
and
sticky_all
are the only interfaces to the package.
sticky
: make an objects attributes persist across
data operations
unstick
: remove the stickiness of an object;
attributes will no longer persist during common data operations
sticky_all
: make all elements of a recursive object
(e.g list, data frames, etc.) sticky.
Here is an simple example of a sticky attribute in action. Under base
R, attributes do not survive a slice/subset/[
operation:
x <- 1:5
attr(x, 'foo') <- 'bar'
attr(x[1:3],'foo') # NULL -- attribute removed
To ensure that they get preserved, simply declare the object as
sticky
:
x <- sticky(x)
attr(x[1:3],'foo') # 'bar' -- attribute preserved
sticky()
works for vectors inside table-like objects (
i.e. data.frames and data.tables), preserving their attributes during
table operations.
df <- data.frame(
sticky = sticky( structure(1:5, foo="bar") ),
nonstick = structure( letters[1:5], foo="baz" )
)
attr( df[2:3,"nonstick"], 'foo' ) # NULL
attr( df[2:3,"sticky"], 'foo' ) # bar
If all elements of a list or a data.frame need to behave in a sticky
manner, use sticky_all
.
df <- sticky_all(df)
attr( df[2:3,"nonstick"], 'foo' ) # Now 'baz'
install.packages('sticky')
library(devtools)
lnstall_github('decisionpatterns/sticky')
There are a number of things that can be done with
sticky
:
The issue of attribute resilience has been often asked and debated. Here are a few of the most prevalent discussions.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.