Nothing
#' Calculate the p-value of intersection for two sets
#'
#' This function calculates the p-value of intersection for two sets.
#'
#' @details A thin wrapper around \code{stats::phyper}.
#'
#' @param a A character vector.
#' @param b A character vector.
#' @param n Set from which \code{a} and \code{b} are
#' selected.
#'
#' @return A numeric value in [0, 1] representing the p-value of intersection
#' for two sets.
#'
#' @examples
#' pvalSets2N(LETTERS[seq(4, 10)], LETTERS[seq(7, 15)], LETTERS)
#'
#' @export
#'
pvalSets2N <- function(a, b, n){
na <- length(a)
nb <- length(b)
nShared <- length(intersect(a, b))
nn <- length(n)
return (phyper(nShared - 1,
na,
nn - na,
nb,
lower.tail=FALSE))
}
#' Compute the p-value of intersection of two subsets of sets M and N
#'
#' This function computes the p-value of intersection of two subsets
#' of sets M and N.
#'
#' @details A thin wrapper around \code{pvalCounts2MN}.
#'
#' @inheritParams pvalSets2N
#' @param m Set from which \code{a} is selected.
#' @param n Set from which \code{b} is selected.
#'
#' @return A numeric value in [0, 1] representing the p-value of intersection
#' of two subsets of sets M and N.
#'
#' @examples
#' pvalSets2MN(LETTERS[seq(4, 10)],
#' LETTERS[seq(7, 15)],
#' LETTERS[seq(19)],
#' LETTERS[seq(6, 26)])
#'
#' @export
#'
pvalSets2MN <- function(a, b, m, n){
if (length(setdiff(a, m)))
stop('`a` must be a subset of `m`.')
if (length(setdiff(b, n)))
stop('`b` must be a subset of `n`.')
return(pvalCounts2MN(length(intersect(m, n)),
length(intersect(a, n)),
length(intersect(b, m)),
length(intersect(a, b))
))
}
#' Compute the p-value of intersection of three subsets
#'
#' This function computes the p-value of intersection of three subsets.
#'
#' @details A thin wrapper around \code{pvalCounts3N}.
#'
#' @inheritParams pvalSets2N
#' @param c A character vector.
#' @param n Set from which \code{a}, \code{b} and \code{c} are
#' selected.
#'
#' @return A numeric value in [0, 1] representing the p-value of intersection
#' of three subsets.
#'
#' @examples
#' pvalSets3N(LETTERS[seq(4, 10)],
#' LETTERS[seq(7, 15)],
#' LETTERS[seq(19)],
#' LETTERS)
#'
#' @export
#'
pvalSets3N <- function(a, b, c, n){
if (length(setdiff(a, n)))
stop('`a` must be a subset of `n`.')
if (length(setdiff(b, n)))
stop('`b` must be a subset of `n`.')
if (length(setdiff(c, n)))
stop('`c` must be a subset of `n`.')
return(pvalCounts3N(length(a),
length(b),
length(c),
length(n),
length(Reduce(intersect, list(a, b, c)))))
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.