compress.default: Do "zero" run-length encoding compression of a vector of...

compress.defaultR Documentation

Do "zero" run-length encoding compression of a vector of numbers.

Description

Efficiently compress a vector containing many zeroes.

Usage

## Default S3 method:
compress(v, verbose=FALSE,...)

Arguments

v

The vector that you wish to compress. This compression function is efficient at compressing vectors with many zeroes, but is not a general compression routine.

verbose

IfTRUE then this routine prints out the degree of compression achieved.

...

any other arguments

Details

Images are large objects. Thresholded 2d wavelet objects (imwd) are also large, but many of their elements are zero. compress.default takes a vector, decides whether compression is necessary and if it is makes an object of class compressed containing the nonzero elements and their position in the original vector.

The decision whether to compress the vector or not depends on two things, first the number of non-zero elements in the vector (r, say), and second the length of the vector (n, say). Since the position and value of the non-zero elements is stored we will need to store 2r values for the non-zero elements. So compression takes place if 2r < n.

This function is the default method for the generic function compress. It can be invoked by calling compress for an object of the appropriate class, or directly by calling compress.default regardless of the class of the object.

Value

An object of class compressed if compression took place, otherwise a an object of class uncompressed.

RELEASE

Version 3.5.3 Copyright Guy Nason 1994

Note

Sometimes the compressed object can be larger than the original. This usually only happens for small objects, so it doesn't really matter.

Author(s)

G P Nason

See Also

compress, imwd, threshold.imwd, uncompress

Examples

#
# Compress a vector with lots of zeroes
#
compress(c(rep(0,100),99))
#$position:
#[1] 101
#
#$values:
#[1] 99
#
#$original.length:
#[1] 101
#
#attr(, "class"):
#[1] "compressed"
#
# Try to compress a vector with not many zeroes
#
compress(1:10)
#$vector:
#[1]  1 2  3  4  5  6  7  8  9 10
#
#attr(, "class"):
#[1] "uncompressed"
#
#

wavethresh documentation built on Sept. 11, 2024, 9:33 p.m.