File: Sorting.Rd

package info (click to toggle)
r-cran-bit 4.0.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 996 kB
  • sloc: ansic: 5,083; makefile: 6
file content (144 lines) | stat: -rw-r--r-- 5,277 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/generics.R
\name{Sorting}
\alias{Sorting}
\alias{ramsort}
\alias{ramorder}
\alias{ramsortorder}
\alias{mergesort}
\alias{mergeorder}
\alias{mergesortorder}
\alias{quicksort}
\alias{quickorder}
\alias{quicksortorder}
\alias{shellsort}
\alias{shellorder}
\alias{shellsortorder}
\alias{radixsort}
\alias{radixorder}
\alias{radixsortorder}
\alias{keysort}
\alias{keyorder}
\alias{keysortorder}
\title{Generics for in-RAM sorting and ordering}
\usage{
ramsort(x, ...)

ramorder(x, i, ...)

ramsortorder(x, i, ...)

mergesort(x, ...)

mergeorder(x, i, ...)

mergesortorder(x, i, ...)

quicksort(x, ...)

quickorder(x, i, ...)

quicksortorder(x, i, ...)

shellsort(x, ...)

shellorder(x, i, ...)

shellsortorder(x, i, ...)

radixsort(x, ...)

radixorder(x, i, ...)

radixsortorder(x, i, ...)

keysort(x, ...)

keyorder(x, i, ...)

keysortorder(x, i, ...)
}
\arguments{
\item{x}{a vector to be sorted by \code{\link{ramsort}} and
\code{\link{ramsortorder}}, i.e. the output of \code{\link{sort}}}

\item{\dots}{further arguments to the sorting methods}

\item{i}{integer positions to be modified by \code{\link{ramorder}} and
\code{\link{ramsortorder}}, default is 1:n, in this case the output is
similar to \code{\link{order}}}
}
\value{
These functions return the number of \code{NAs} found or assumed
during sorting
}
\description{
These are generic stubs for low-level sorting and ordering methods
implemented in packages 'bit64' and 'ff'.  The \code{..sortorder} methods do
sorting and ordering at once, which requires more RAM than ordering but is
(almost) as fast as as sorting.
}
\details{
The \code{sort} generics do sort their argument 'x', some methods need
temporary RAM of the same size as 'x'.  The \code{order} generics do order
their argument 'i' leaving 'x' as it was, some methods need temporary RAM of
the same size as 'i'.  The \code{sortorder} generics do sort their argument
'x' and order their argument 'i', this way of ordering is much faster at the
price of requiring temporary RAM for both, 'x' and 'i', if the method
requires temporary RAM.  The \code{ram} generics are high-level functions
containing an optimizer that chooses the 'best' algorithms given some
context.
}
\note{
Note that these methods purposely violate the functional programming
paradigm: they are called for the side-effect of changing some of their
arguments.  The rationale behind this is that sorting is very RAM-intensive
and in certain situations we might not want to allocate additional memory if
not necessary to do so.  The \code{sort}-methods change \code{x}, the
\code{order}-methods change \code{i}, and the \code{sortoder}-methods change
both \code{x} and \code{i} You as the user are responsible to create copies
of the input data 'x' and 'i' if you need non-modified versions.
}
\section{Index of implemented methods}{
 \tabular{rrl}{ \bold{generic} \tab
\bold{ff} \tab \bold{bit64} \cr \code{ramsort} \tab
\code{\link[ff]{ramsort.default}} \tab
\code{\link[bit64]{ramsort.integer64}} \cr \code{shellsort} \tab
\code{\link[ff:ramsort.default]{shellsort.default}} \tab
\code{\link[bit64:ramsort.integer64]{shellsort.integer64}} \cr \code{quicksort} \tab \tab
\code{\link[bit64:ramsort.integer64]{quicksort.integer64}} \cr \code{mergesort} \tab
\code{\link[ff:ramsort.default]{mergesort.default}} \tab
\code{\link[bit64:ramsort.integer64]{mergesort.integer64}} \cr \code{radixsort} \tab
\code{\link[ff:ramsort.default]{radixsort.default}} \tab
\code{\link[bit64:ramsort.integer64]{radixsort.integer64}} \cr \code{keysort} \tab
\code{\link[ff:ramsort.default]{keysort.default}} \tab \cr \cr \bold{generic} \tab \bold{ff}
\tab \bold{bit64} \cr \code{ramorder} \tab
\code{\link[ff]{ramorder.default}} \tab
\code{\link[bit64:ramsort.integer64]{ramorder.integer64}} \cr \code{shellorder} \tab
\code{\link[ff:ramorder.default]{shellorder.default}} \tab
\code{\link[bit64:ramsort.integer64]{shellorder.integer64}} \cr \code{quickorder} \tab \tab
\code{\link[bit64:ramsort.integer64]{quickorder.integer64}} \cr \code{mergeorder} \tab
\code{\link[ff:ramorder.default]{mergeorder.default}} \tab
\code{\link[bit64:ramsort.integer64]{mergeorder.integer64}} \cr \code{radixorder} \tab
\code{\link[ff:ramorder.default]{radixorder.default}} \tab
\code{\link[bit64:ramsort.integer64]{radixorder.integer64}} \cr \code{keyorder} \tab
\code{\link[ff:ramorder.default]{keyorder.default}} \tab \cr \cr \bold{generic} \tab
\bold{ff} \tab \bold{bit64} \cr \code{ramsortorder} \tab \tab
\code{\link[bit64:ramsort.integer64]{ramsortorder.integer64}} \cr \code{shellsortorder} \tab
\tab \code{\link[bit64:ramsort.integer64]{shellsortorder.integer64}} \cr \code{quicksortorder}
\tab \tab \code{\link[bit64:ramsort.integer64]{quicksortorder.integer64}} \cr
\code{mergesortorder} \tab \tab
\code{\link[bit64:ramsort.integer64]{mergesortorder.integer64}} \cr \code{radixsortorder} \tab
\tab \code{\link[bit64:ramsort.integer64]{radixsortorder.integer64}} \cr \code{keysortorder}
\tab \tab \cr }
}

\seealso{
\code{\link{sort}} and \code{\link{order}} in base R, \code{\link{bitsort}} for faster inteer sorting
}
\author{
Jens Oehlschlägel <Jens.Oehlschlaegel@truecluster.com>
}
\keyword{arith}
\keyword{manip}
\keyword{univar}