Broom tidies a number of lists that are effectively S3
objects without a class attribute. For example, stats::optim()
,
svd() and akima::interp()
produce consistent output, but
because they do not have a class attribute, they cannot be handled by S3
dispatch.
These functions look at the elements of a list and determine if there is
an appropriate tidying method to apply to the list. Those tidiers are
themselves are implemented as functions of the form tidy_<function>
or glance_<function>
and are not exported (but they are documented!).
If no appropriate tidying method is found, throws an error.
tidy_irlba(x, ...)
x | A list returned from |
---|---|
... | Additional arguments. Not used. Needed to match generic
signature only. Cautionary note: Misspelled arguments will be
absorbed in |
A tibble::tibble with columns depending on the component of PCA being tidied.
If matrix
is "u"
, "samples"
, "scores"
, or "x"
each row in the
tidied output corresponds to the original data in PCA space. The columns
are:
row
ID of the original observation (i.e. rowname from original data).
PC
Integer indicating a principal component.
value
The score of the observation for that particular principal component. That is, the location of the observation in PCA space.
row
The variable labels (colnames) of the data set on which PCA was performed
PC
An integer vector indicating the principal component
value
The value of the eigenvector (axis score) on the indicated principal component
PC
An integer vector indicating the principal component
std.dev
Standard deviation explained by this PC
percent
Fraction of variation explained by this component (a numeric value between 0 and 1).
cumulative
Cumulative fraction of variation explained by principle components up to this component (a numeric value between 0 and 1).
A very thin wrapper around tidy_svd()
.
Other list tidiers:
glance_optim()
,
list_tidiers
,
tidy_optim()
,
tidy_svd()
,
tidy_xyz()
Other svd tidiers:
augment.prcomp()
,
tidy.prcomp()
,
tidy_svd()
if (requireNamespace("modeldata", quietly = TRUE)) { library(modeldata) data(hpc_data) mat <- scale(as.matrix(hpc_data[, 2:5])) s <- svd(mat) tidy_u <- tidy(s, matrix = "u") tidy_u tidy_d <- tidy(s, matrix = "d") tidy_d tidy_v <- tidy(s, matrix = "v") tidy_v library(ggplot2) library(dplyr) ggplot(tidy_d, aes(PC, percent)) + geom_point() + ylab("% of variance explained") tidy_u %>% mutate(class = hpc_data$class[row]) %>% ggplot(aes(class, value)) + geom_boxplot() + facet_wrap(~PC, scale = "free_y") } #> New names: #> * `` -> ...1 #> * `` -> ...2 #> * `` -> ...3 #> * `` -> ...4 #> New names: #> * `` -> ...1 #> * `` -> ...2 #> * `` -> ...3 #> * `` -> ...4