~hrbrmstr/tdigest

2bbe5b2c9230ac54e3e2395487e2cac1a2e33ca7 — hrbrmstr 5 years ago 1e8e9ea
length and subset
4 files changed, 44 insertions(+), 0 deletions(-)

M NAMESPACE
M R/create.R
M man/td_total_count.Rd
M man/td_value_at.Rd
M NAMESPACE => NAMESPACE +2 -0
@@ 1,5 1,7 @@
# Generated by roxygen2: do not edit by hand

S3method("[",tdigest)
S3method(length,tdigest)
S3method(print,tdigest)
S3method(quantile,tdigest)
export("%>%")

M R/create.R => R/create.R +24 -0
@@ 109,6 109,7 @@ td_create <- function(compression=100) {
#' td <- td_create(10)
#' td_add(td, 0, 1)
#' td_total_count(td)
#' length(td)
td_total_count <- function(td) {
  stopifnot(inherits(td, "tdigest"))
  stopifnot(!is_null_xptr(td))


@@ 144,6 145,9 @@ td_add <- function(td, val, count) {
#'   td_add(10, 1)
#'
#' td_value_at(td, 0.1)
#' td_value_at(td, 0.5)
#' td[0.1]
#' td[0.5]
td_value_at <- function(td, q) {
  stopifnot(inherits(td, "tdigest"))
  stopifnot(!is_null_xptr(td))


@@ 176,3 180,23 @@ td_merge <- function(from, into) {
  stopifnot(!is_null_xptr(into))
  .Call("Rtd_merge", from=from, into=into, PACKAGE="tdigest")
}


#' @rdname td_total_count
#' @param x a tdigest object
#' @export
length.tdigest <- function(x) {
  td_total_count(x)
}

#' @rdname td_value_at
#' @param x a tdigest object
#' @param i quantile (range 0:1)
#' @param ... unused
#' @export
`[.tdigest` <- function(x, i, ...) {
  if (length(x) == 0) return(NULL)
  i <- as.double(i[1])
  if ((i<=0) || (i>1)) return(NULL)
  td_value_at(x, i)
}

M man/td_total_count.Rd => man/td_total_count.Rd +6 -0
@@ 2,12 2,17 @@
% Please edit documentation in R/create.R
\name{td_total_count}
\alias{td_total_count}
\alias{length.tdigest}
\title{Total items contained in the t-digest}
\usage{
td_total_count(td)

\method{length}{tdigest}(x)
}
\arguments{
\item{td}{t-digest object}

\item{x}{a tdigest object}
}
\description{
Total items contained in the t-digest


@@ 16,4 21,5 @@ Total items contained in the t-digest
td <- td_create(10)
td_add(td, 0, 1)
td_total_count(td)
length(td)
}

M man/td_value_at.Rd => man/td_value_at.Rd +12 -0
@@ 2,14 2,23 @@
% Please edit documentation in R/create.R
\name{td_value_at}
\alias{td_value_at}
\alias{[.tdigest}
\title{Return the value at the specified quantile}
\usage{
td_value_at(td, q)

\method{[}{tdigest}(x, i, ...)
}
\arguments{
\item{td}{t-digest object}

\item{q}{quantile (range 0:1)}

\item{x}{a tdigest object}

\item{i}{quantile (range 0:1)}

\item{...}{unused}
}
\description{
Return the value at the specified quantile


@@ 21,4 30,7 @@ td_add(td, 0, 1) \%>\%
  td_add(10, 1)

td_value_at(td, 0.1)
td_value_at(td, 0.5)
td[0.1]
td[0.5]
}