frame is an R package providing a dataset
type analogous to a
data.frame
supporting two major extensions: (1) associate keys with one
or more components to each row; (2) use matrix-like objects as columns,
including nested datasets.
frame is available on CRAN. To install the latest released version, run the following command in R:
### install.packages("frame") # not yet, actually
To install the latest development version, run the following:
devtools::install_github("patperry/r-frame")
The dataset
type is like a data.frame
but it allows matrix-like columns,
including sparse matrices and nested datasets.
# dataset with a sparse matrix column
(x <- dataset(age = c(35, 70, 12, 42),
color = c("red", "blue", "black", "green"),
set = Matrix::sparseMatrix(i = c(1, 1, 2, 3, 3, 4),
j = c(3, 2, 1, 3, 2, 1),
x = c(2.8, -1.3, 7.1, 0.1, -5.1, 3.8),
dimnames = list(NULL, c("a", "b", "c")))))
#> ════set═════
#> age color a b c
#> 1 35 red 0.0 -1.3 2.8
#> 2 70 blue 7.1 0.0 0.0
#> 3 12 black 0.0 -5.1 0.1
#> 4 42 green 3.8 0.0 0.0
# dataset with a dataset column
(y <- dataset(value = rnorm(4), nested = x))
#> ════════nested════════
#> ════set═════
#> value age color a b c
#> 1 1.2629543 35 red 0.0 -1.3 2.8
#> 2 -0.3262334 70 blue 7.1 0.0 0.0
#> 3 1.3297993 12 black 0.0 -5.1 0.1
#> 4 1.2724293 42 green 3.8 0.0 0.0
Datasets can have multi-component keys that uniquely identify each row.
You can index a dataset just like a data.frame
, or you can use key values
to extract particular rows.
# set multi-component keys
keys(x) <- keyset(major = c("x", "x", "y", "y"),
minor = c(1, 2, 1, 3))
# show the data keys and values
print(x)
#> ════set═════
#> major minor │ age color a b c
#> x 1 │ 35 red 0.0 -1.3 2.8
#> x 2 │ 70 blue 7.1 0.0 0.0
#> y 1 │ 12 black 0.0 -5.1 0.1
#> y 3 │ 42 green 3.8 0.0 0.0
# index with keys
x[dataset(major = c("y", "x"),
minor = c( 3, 1)), ]
#> ════set═════
#> major minor │ age color a b c
#> y 3 │ 42 green 3.8 0.0 0.0
#> x 1 │ 35 red 0.0 -1.3 2.8
Cite frame with the following BibTeX entry:
@Manual{,
title = {frame: Data with Context},
author = {Patrick O. Perry},
year = {2018},
note = {R package version 0.0.0},
}
The project maintainer welcomes contributions in the form of feature requests, bug reports, comments, unit tests, vignettes, or other code. If you'd like to contribute, either
fork the repository and submit a pull request;
or contact the maintainer via e-mail.
This project is released with a Contributor Code of Conduct, and if you choose to contribute, you must adhere to its terms.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.