R/blockmat.R

Defines functions blockmat.sbm blockmat.blocks blockmat.numeric blockmat

Documented in blockmat blockmat.blocks blockmat.numeric blockmat.sbm

#' @title Block matrix
#' @description converts \code{x} to a matrix of block assignments
#' @param x object for dispatch
#' @param ... additional arguments for method
#' @return matrix of block assignment indicators
#' @seealso \code{\link{blockmat.sbm}} \code{\link{blockmat.blocks}} \code{\link{blockmat.numeric}}
blockmat <- function(x, ...)
    UseMethod("blockmat", x)

#' @title Block matrix
#' @description converts a vector of block assignments to a matrix of block assignments
#' @param x a numeric-vector of node-to-block assignments
#' @param kappa number of blocks
#' @return matrix with \code{kappa} rows and a 1 at \code{(k,i)} if node \code{i} is in block \code{k} under \code{x}
blockmat.numeric <- function(x, kappa){
    out <- diag(kappa)[ , x, drop=FALSE]
    rownames(out) <- paste0("block",1:kappa)
    colnames(out) <- paste0("node",1:length(x))
    out
}

#' @rdname blockmat.numeric
blockmat.factor <- blockmat.numeric

#' @title Block matrix
#' @description converts block assignments of a \code{blocks} object to a matrix of block assignments
#' @param blocks a \code{blocks} object
#' @param kappa number of blocks in matrix
#' @return matrix with \code{kappa} rows and a 1 at \code{(k,i)} if node \code{i} is in block \code{k} under \code{blocks}
blockmat.blocks <- function(blocks, kappa){
    if(missing(kappa))
        kappa <- blocks$kappa
    blockmat(blocks$z, kappa)
}

#' @title Block matrix
#' @description converts block assignments of an \code{sbm} object to a matrix of block assignments
#' @param SBM an \code{sbm} object
#' @param kappa number of blocks in matrix
#' @return matrix with \code{kappa} rows and a 1 at \code{(k,i)} if node \code{i} is in block \code{k} under \code{SBM}
blockmat.sbm <- function(SBM, kappa)
    blockmat(SBM$blocks, kappa)

Try the SBMSplitMerge package in your browser

Any scripts or data that you put into this service are public.

SBMSplitMerge documentation built on July 1, 2020, 5:23 p.m.