as.covar | R Documentation |
Changes a dispRity metric to use the covar element from a dispRity object.
as.covar(fun, ..., VCV = TRUE, loc = FALSE)
fun |
a |
... |
any additional arguments to pass to fun. |
VCV |
logical, whether to use the |
loc |
logical, whether to use the |
This function effectively transforms the input argument from matrix
(or matrix2
) to matrix = matrix$VCV
and adds a evaluation after the return call to indicate that the function works on a $covar
element.
Note that if the function does not have an argument called matrix
, the first argument is estimated as being the one to be transformed (e.g. if the function has its first argument x
, it will transform it to x = x$VCV
).
You can toggle between using the $VCV
or the $loc
argument in the $covar
matrix by using either VCV = TRUE, loc = FALSE
(to access only fun(matrix = matrix$VCV, ...)
), VCV = FALSE, loc = TRUE
(to access only matrix = matrix(matrix$loc, nrow = 1), ...
) or VCV = TRUE, loc = TRUE
(to access fun(matrix = matrix$VCV, loc = matrix$loc, ...)
; provided fun
has an extra loc
argument).
For between.groups
metrics with matrix
and matrix2
arguments, you can provide multiple logicals for VCV
and loc
to be applied repspectively to matrix
and matrix2
. For example VCV = TRUE
will reinterpret matrix
and matrix2
as matrix$VCV
and matrix2$VCV
but loc = c(TRUE, FALSE)
will only reinterpret matrix
as matrix$loc
(and matrix2
will not be reinterpreted).
Thomas Guillerme
dispRity
MCMCglmm.subsets
## Creating a dispRity
data(charadriiformes)
## Creating a dispRity object from the charadriiformes model
covar_data <- MCMCglmm.subsets(data = charadriiformes$data,
posteriors = charadriiformes$posteriors)
## Get one matrix and one covar matrix
one_matrix <- get.matrix(covar_data, subsets = 1)
one_covar <- get.covar(covar_data, subsets = 1, n = 1)[[1]][[1]]
## Measure the centroids
centroids(one_matrix)
## Measure the centroids on the covar matrix
as.covar(centroids)(one_covar)
## Is the same as:
centroids(one_covar$VCV)
## Apply the measurement on a dispRity object:
## On the traitspace:
summary(dispRity(covar_data, metric = c(sum, centroids)))
## On the covariance matrices:
summary(dispRity(covar_data, metric = c(sum, as.covar(centroids))))
## The same but with additional options (centre = 100)
summary(dispRity(covar_data,
metric = c(sum, as.covar(centroids)),
centre = 100))
## Example with the VCV and loc options
## A metric that works with both VCV and loc
## (the sum of the variances minus the distance from the location)
sum.var.dist <- function(matrix, loc = rep(0, ncol(matrix))) {
## Get the sum of the diagonal of the matrix
sum_diag <- sum(diag(matrix))
## Get the distance between 0 and the loc
dist_loc <- dist(matrix(c(rep(0, ncol(matrix)), loc), nrow = 2, byrow = TRUE))[1]
## Return the sum of the diagonal minus the distance
return(sum_diag - dist_loc)
}
## Changing the $loc on one_covar for the demonstration
one_covar$loc <- c(1, 2, 3)
## Metric on the VCV part only
as.covar(sum.var.dist, VCV = TRUE, loc = FALSE)(one_covar)
## Metric on the loc part only
as.covar(sum.var.dist, VCV = FALSE, loc = TRUE)(one_covar)
## Metric on both parts
as.covar(sum.var.dist, VCV = TRUE, loc = TRUE)(one_covar)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.