From d7d19772d446f119966ea6436c191cf10b3b08b8 Mon Sep 17 00:00:00 2001
From: Alex Peters <80283343+alexpeters1208@users.noreply.github.com>
Date: Mon, 18 Sep 2023 19:00:45 -0500
Subject: [PATCH] Generate docs (#4512)
* Add roxygen blocks to generate man pages
* Add man pages
* Remove autogenerated namespace directive
* Make minimal changes
* Remove Aggregation, upload TableHandle
* Remove Aggregation
---
R/rdeephaven/man/Client.Rd | 258 ++++++++++
R/rdeephaven/man/TableHandle.Rd | 863 ++++++++++++++++++++++++++++++++
2 files changed, 1121 insertions(+)
create mode 100644 R/rdeephaven/man/Client.Rd
create mode 100644 R/rdeephaven/man/TableHandle.Rd
diff --git a/R/rdeephaven/man/Client.Rd b/R/rdeephaven/man/Client.Rd
new file mode 100644
index 00000000000..230f263c4b7
--- /dev/null
+++ b/R/rdeephaven/man/Client.Rd
@@ -0,0 +1,258 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/client_wrapper.R
+\docType{class}
+\name{Client}
+\alias{Client}
+\title{The Deephaven R Client}
+\description{
+A Client is the entry point for interacting with the Deephaven server.
+It is used to create new tables, import data to and export data from the server,
+and run queries on the server.
+}
+\section{Methods}{
+\subsection{Public methods}{
+\itemize{
+\item \href{#method-Client-new}{\code{Client$new()}}
+\item \href{#method-Client-initialize_for_xptr}{\code{Client$initialize_for_xptr()}}
+\item \href{#method-Client-initialize_for_target}{\code{Client$initialize_for_target()}}
+\item \href{#method-Client-empty_table}{\code{Client$empty_table()}}
+\item \href{#method-Client-time_table}{\code{Client$time_table()}}
+\item \href{#method-Client-open_table}{\code{Client$open_table()}}
+\item \href{#method-Client-import_table}{\code{Client$import_table()}}
+\item \href{#method-Client-ticket_to_table}{\code{Client$ticket_to_table()}}
+\item \href{#method-Client-run_script}{\code{Client$run_script()}}
+\item \href{#method-Client-close}{\code{Client$close()}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-new}{}}}
+\subsection{Method \code{new()}}{
+Calls `initialize_for_xptr` if the first argument is an external pointer, and `initialize_for_target` if the
+first argument is a string. In the latter case, the remaining keyword arguments are passed to `initialize_for_target`.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$new(...)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{...}}{Either an external pointer to an existing client connection, or a string denoting the address
+of a running Deephaven server followed by keyword arguments to `initialize_from_target`.}
+}
+\if{html}{\out{
}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-initialize_for_xptr}{}}}
+\subsection{Method \code{initialize_for_xptr()}}{
+Initializes a Client object using a pointer to an existing client connection.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$initialize_for_xptr(xptr)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{xptr}}{External pointer to an existing client connection.}
+}
+\if{html}{\out{
}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-initialize_for_target}{}}}
+\subsection{Method \code{initialize_for_target()}}{
+Initializes a Client object and connects to a Deephaven server.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$initialize_for_target(
+ target,
+ auth_type = "anonymous",
+ username = "",
+ password = "",
+ auth_token = "",
+ session_type = "python",
+ use_tls = FALSE,
+ tls_root_certs = "",
+ int_options = list(),
+ string_options = list(),
+ extra_headers = list()
+)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{target}}{String denoting the address of a Deephaven server, formatted as `"ip:port"`.}
+
+\item{\code{auth_type}}{String denoting the authentication type. Can be `"anonymous"`, `"basic"`,
+or any custom-built authenticator supported by the server, such as `"io.deephaven.authentication.psk.PskAuthenticationHandler"`.
+Default is `anonymous`.}
+
+\item{\code{username}}{String denoting the username, which only applies if `auth_type` is `basic`.
+Username and password should not be used in conjunction with `auth_token`. Defaults to an empty string.}
+
+\item{\code{password}}{String denoting the password, which only applies if `auth_type` is `basic`.
+Username and password should not be used in conjunction with `auth_token`. Defaults to an empty string.}
+
+\item{\code{auth_token}}{String denoting the authentication token. When `auth_type`
+is `anonymous`, it will be ignored; when `auth_type` is `basic`, it must be
+`"user:password"` or left blank; when `auth_type` is a custom-built authenticator, it must
+conform to the specific requirement of that authenticator. This should not be used
+in conjunction with `username` and `password`. Defaults to an empty string.}
+
+\item{\code{session_type}}{String denoting the session type supported on the server.
+Currently, `python` and `groovy` are supported. Defaults to `python`.}
+
+\item{\code{use_tls}}{Whether or not to use a TLS connection. Defaults to `FALSE`.}
+
+\item{\code{tls_root_certs}}{String denoting PEM encoded root certificates to use for TLS connection,
+or `""` to use system defaults. Only used if `use_tls == TRUE`. Defaults to system defaults.}
+
+\item{\code{int_options}}{List of name-value pairs for int-valued options to the underlying
+grpc channel creation. Defaults to an empty list, which implies not using any channel options.}
+
+\item{\code{string_options}}{List of name-value pairs for string-valued options to the underlying
+grpc channel creation. Defaults to an empty list, which implies not using any channel options.}
+
+\item{\code{extra_headers}}{List of name-value pairs for additional headers and values
+to add to server requests. Defaults to an empty list, which implies not using any extra headers.}
+}
+\if{html}{\out{
}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-empty_table}{}}}
+\subsection{Method \code{empty_table()}}{
+Creates an empty table on the server with 'size' rows and no columns.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$empty_table(size)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{size}}{Non-negative integer specifying the number of rows for the new table.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+TableHandle reference to the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-time_table}{}}}
+\subsection{Method \code{time_table()}}{
+Creates a ticking table on the server.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$time_table(period, start_time = "now")}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{period}}{ISO-8601-formatted string specifying the update frequency of the new table.}
+
+\item{\code{start_time}}{Optional ISO-8601-formatted string specifying the start time of the table.
+Defaults to now.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+TableHandle reference to the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-open_table}{}}}
+\subsection{Method \code{open_table()}}{
+Retrieves a reference to a named table on the server using its name.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$open_table(name)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{name}}{String denoting the name of the table to retrieve.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+TableHandle reference to the named table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-import_table}{}}}
+\subsection{Method \code{import_table()}}{
+Imports a new table to the Deephaven server. Note that this new table is not automatically bound to
+a variable name on the server. See `?TableHandle` for more information.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$import_table(table_object)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{table_object}}{R Data Frame, dplyr Tibble, Arrow Table, Arrow RecordBatchReader, or other supported table
+containing the data to import to the server.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+TableHandle reference to the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-ticket_to_table}{}}}
+\subsection{Method \code{ticket_to_table()}}{
+Retrieves a reference to a named table in the server using its Arrow Flight ticket.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$ticket_to_table(ticket)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{ticket}}{String denoting the Arrow Flight ticket.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+TableHandle reference to the table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-run_script}{}}}
+\subsection{Method \code{run_script()}}{
+Runs a script on the server. The script must be in the language that the server console was started with.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$run_script(script)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{script}}{String containing the code to be executed on the server.}
+}
+\if{html}{\out{
}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-Client-close}{}}}
+\subsection{Method \code{close()}}{
+Closes the client connection. After this method is called, any further server calls will
+be undefined and will likely result in an error.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{Client$close()}\if{html}{\out{
}}
+}
+
+}
+}
diff --git a/R/rdeephaven/man/TableHandle.Rd b/R/rdeephaven/man/TableHandle.Rd
new file mode 100644
index 00000000000..56d254873ad
--- /dev/null
+++ b/R/rdeephaven/man/TableHandle.Rd
@@ -0,0 +1,863 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/table_handle_wrapper.R
+\docType{class}
+\name{TableHandle}
+\alias{TableHandle}
+\title{Deephaven Tables}
+\description{
+A TableHandle holds a reference to a Deephaven Table on the server, and provides methods for operating on that table.
+Note that TableHandles should not be instantiated directly by user code, but rather by server calls accessible from
+the `Client` class. See `?Client` for more information.
+}
+\section{Methods}{
+\subsection{Public methods}{
+\itemize{
+\item \href{#method-TableHandle-new}{\code{TableHandle$new()}}
+\item \href{#method-TableHandle-is_static}{\code{TableHandle$is_static()}}
+\item \href{#method-TableHandle-bind_to_variable}{\code{TableHandle$bind_to_variable()}}
+\item \href{#method-TableHandle-head}{\code{TableHandle$head()}}
+\item \href{#method-TableHandle-tail}{\code{TableHandle$tail()}}
+\item \href{#method-TableHandle-nrow}{\code{TableHandle$nrow()}}
+\item \href{#method-TableHandle-ncol}{\code{TableHandle$ncol()}}
+\item \href{#method-TableHandle-dim}{\code{TableHandle$dim()}}
+\item \href{#method-TableHandle-merge}{\code{TableHandle$merge()}}
+\item \href{#method-TableHandle-as_record_batch_reader}{\code{TableHandle$as_record_batch_reader()}}
+\item \href{#method-TableHandle-as_arrow_table}{\code{TableHandle$as_arrow_table()}}
+\item \href{#method-TableHandle-as_tibble}{\code{TableHandle$as_tibble()}}
+\item \href{#method-TableHandle-as_data_frame}{\code{TableHandle$as_data_frame()}}
+\item \href{#method-TableHandle-select}{\code{TableHandle$select()}}
+\item \href{#method-TableHandle-view}{\code{TableHandle$view()}}
+\item \href{#method-TableHandle-update}{\code{TableHandle$update()}}
+\item \href{#method-TableHandle-update_view}{\code{TableHandle$update_view()}}
+\item \href{#method-TableHandle-drop_columns}{\code{TableHandle$drop_columns()}}
+\item \href{#method-TableHandle-where}{\code{TableHandle$where()}}
+\item \href{#method-TableHandle-group_by}{\code{TableHandle$group_by()}}
+\item \href{#method-TableHandle-ungroup}{\code{TableHandle$ungroup()}}
+\item \href{#method-TableHandle-agg_by}{\code{TableHandle$agg_by()}}
+\item \href{#method-TableHandle-agg_all_by}{\code{TableHandle$agg_all_by()}}
+\item \href{#method-TableHandle-first_by}{\code{TableHandle$first_by()}}
+\item \href{#method-TableHandle-last_by}{\code{TableHandle$last_by()}}
+\item \href{#method-TableHandle-head_by}{\code{TableHandle$head_by()}}
+\item \href{#method-TableHandle-tail_by}{\code{TableHandle$tail_by()}}
+\item \href{#method-TableHandle-min_by}{\code{TableHandle$min_by()}}
+\item \href{#method-TableHandle-max_by}{\code{TableHandle$max_by()}}
+\item \href{#method-TableHandle-sum_by}{\code{TableHandle$sum_by()}}
+\item \href{#method-TableHandle-abs_sum_by}{\code{TableHandle$abs_sum_by()}}
+\item \href{#method-TableHandle-avg_by}{\code{TableHandle$avg_by()}}
+\item \href{#method-TableHandle-w_avg_by}{\code{TableHandle$w_avg_by()}}
+\item \href{#method-TableHandle-median_by}{\code{TableHandle$median_by()}}
+\item \href{#method-TableHandle-var_by}{\code{TableHandle$var_by()}}
+\item \href{#method-TableHandle-std_by}{\code{TableHandle$std_by()}}
+\item \href{#method-TableHandle-percentile_by}{\code{TableHandle$percentile_by()}}
+\item \href{#method-TableHandle-count_by}{\code{TableHandle$count_by()}}
+\item \href{#method-TableHandle-cross_join}{\code{TableHandle$cross_join()}}
+\item \href{#method-TableHandle-natural_join}{\code{TableHandle$natural_join()}}
+\item \href{#method-TableHandle-exact_join}{\code{TableHandle$exact_join()}}
+\item \href{#method-TableHandle-sort}{\code{TableHandle$sort()}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-new}{}}}
+\subsection{Method \code{new()}}{
+Initializes a new TableHandle from an internal Deephaven TableHandle.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$new(table_handle)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{table_handle}}{Internal Deephaven TableHandle.}
+}
+\if{html}{\out{
}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-is_static}{}}}
+\subsection{Method \code{is_static()}}{
+Determines whether the table referenced by this TableHandle is static or not.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$is_static()}\if{html}{\out{
}}
+}
+
+\subsection{Returns}{
+TRUE if the table is static, or FALSE if the table is ticking.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-bind_to_variable}{}}}
+\subsection{Method \code{bind_to_variable()}}{
+Binds the table referenced by this TableHandle to a variable on the server, so that it can be referenced by that name.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$bind_to_variable(name)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{name}}{Name for this table on the server.}
+}
+\if{html}{\out{
}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-head}{}}}
+\subsection{Method \code{head()}}{
+Creates a new table containing the first `n` rows of this table.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$head(n)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{n}}{Positive integer specifying the number of rows to return.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-tail}{}}}
+\subsection{Method \code{tail()}}{
+Creates a new table containing the last `n` rows of this table.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$tail(n)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{n}}{Positive integer specifying the number of rows to return.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table consisting of the last n rows of the parent table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-nrow}{}}}
+\subsection{Method \code{nrow()}}{
+Gets the number of rows in the table referenced by this TableHandle.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$nrow()}\if{html}{\out{
}}
+}
+
+\subsection{Returns}{
+The number of rows in the table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-ncol}{}}}
+\subsection{Method \code{ncol()}}{
+Gets the number of columns in the table referenced by this TableHandle.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$ncol()}\if{html}{\out{
}}
+}
+
+\subsection{Returns}{
+The number of columns in the table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-dim}{}}}
+\subsection{Method \code{dim()}}{
+Gets the dimensions of the table referenced by this TableHandle. Equivalent to c(nrow, ncol).
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$dim()}\if{html}{\out{
}}
+}
+
+\subsection{Returns}{
+A vector of length 2, where the first element is the number of rows in the table and the second
+element is the number of columns in the table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-merge}{}}}
+\subsection{Method \code{merge()}}{
+Merges several tables into one table on the server. The tables must have the same schema as this table, and can
+be supplied as a list of TableHandles, any number of TableHandles, or a mix of both.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$merge(...)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{...}}{Arbitrary number of TableHandles or vectors of TableHandles with a schema matching this table.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-as_record_batch_reader}{}}}
+\subsection{Method \code{as_record_batch_reader()}}{
+Converts the table referenced by this TableHandle to an Arrow RecordBatchStreamReader.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$as_record_batch_reader()}\if{html}{\out{
}}
+}
+
+\subsection{Returns}{
+An Arrow RecordBatchStreamReader constructed from the data of this TableHandle.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-as_arrow_table}{}}}
+\subsection{Method \code{as_arrow_table()}}{
+Converts the table referenced by this TableHandle to an Arrow Table.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$as_arrow_table()}\if{html}{\out{
}}
+}
+
+\subsection{Returns}{
+An Arrow Table constructed from the data of this TableHandle.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-as_tibble}{}}}
+\subsection{Method \code{as_tibble()}}{
+Converts the table referenced by this TableHandle to a dplyr tibble.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$as_tibble()}\if{html}{\out{
}}
+}
+
+\subsection{Returns}{
+A dplyr tibble constructed from the data of this TableHandle.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-as_data_frame}{}}}
+\subsection{Method \code{as_data_frame()}}{
+Converts the table referenced by this TableHandle to an R data frame.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$as_data_frame()}\if{html}{\out{
}}
+}
+
+\subsection{Returns}{
+An R data frame constructed from the data of this TableHandle.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-select}{}}}
+\subsection{Method \code{select()}}{
+Creates a new in-memory table that includes one column for each formula.
+If no formula is specified, all columns will be included.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$select(formulas = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{formulas}}{String or list of strings denoting the column formulas.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-view}{}}}
+\subsection{Method \code{view()}}{
+Creates a new formula table that includes one column for each formula.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$view(formulas = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{formulas}}{String or list of strings denoting the column formulas.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-update}{}}}
+\subsection{Method \code{update()}}{
+Creates a new table containing a new, in-memory column for each formula.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$update(formulas = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{formulas}}{String or list of strings denoting the column formulas.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-update_view}{}}}
+\subsection{Method \code{update_view()}}{
+Creates a new table containing a new formula column for each formula.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$update_view(formulas = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{formulas}}{String or list of strings denoting the column formulas.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-drop_columns}{}}}
+\subsection{Method \code{drop_columns()}}{
+Creates a new table that has the same number of rows as this table,
+but omits the columns specified in `cols`.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$drop_columns(cols = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{cols}}{String or list of strings denoting the names of the columns to drop.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-where}{}}}
+\subsection{Method \code{where()}}{
+Creates a new table containing only the rows meeting the filter condition.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$where(filter)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{filter}}{String denoting the filter condition.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-group_by}{}}}
+\subsection{Method \code{group_by()}}{
+Creates a new table containing grouping columns and grouped data, with column content is grouped into arrays.
+If no group-by column is given, the content of each column is grouped into its own array.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$group_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-ungroup}{}}}
+\subsection{Method \code{ungroup()}}{
+Creates a new table in which array columns from the source table are unwrapped into separate rows.
+The ungroup columns should be of array types.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$ungroup(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to ungroup.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-agg_by}{}}}
+\subsection{Method \code{agg_by()}}{
+Creates a new table containing grouping columns and grouped data. The resulting grouped data is defined by the
+aggregation(s) specified. See `?Aggregations` for more information.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$agg_by(aggs, by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{aggs}}{Aggregation or list of Aggregations to perform on non-grouping columns.}
+
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-agg_all_by}{}}}
+\subsection{Method \code{agg_all_by()}}{
+Creates a new table containing grouping columns and grouped data. The resulting grouped data is defined by the
+aggregation(s) specified. See `?Aggregations` for more information.
+This method applies the aggregation to all columns of the table, so it can only
+accept one aggregation at a time.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$agg_all_by(agg, by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{agg}}{Aggregation to perform on non-grouping columns.}
+
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-first_by}{}}}
+\subsection{Method \code{first_by()}}{
+Creates a new table containing the first row of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$first_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-last_by}{}}}
+\subsection{Method \code{last_by()}}{
+Creates a new table containing the last row of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$last_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-head_by}{}}}
+\subsection{Method \code{head_by()}}{
+Creates a new table containing the first `num_rows` rows of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$head_by(num_rows, by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{num_rows}}{Positive integer specifying the number of rows to return.}
+
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-tail_by}{}}}
+\subsection{Method \code{tail_by()}}{
+Creates a new table containing the last `num_rows` rows of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$tail_by(num_rows, by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{num_rows}}{Positive integer specifying the number of rows to return.}
+
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-min_by}{}}}
+\subsection{Method \code{min_by()}}{
+Creates a new table containing the column-wise minimum of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$min_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-max_by}{}}}
+\subsection{Method \code{max_by()}}{
+Creates a new table containing the column-wise maximum of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$max_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-sum_by}{}}}
+\subsection{Method \code{sum_by()}}{
+Creates a new table containing the column-wise sum of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$sum_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-abs_sum_by}{}}}
+\subsection{Method \code{abs_sum_by()}}{
+Creates a new table containing the column-wise absolute sum of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$abs_sum_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-avg_by}{}}}
+\subsection{Method \code{avg_by()}}{
+Creates a new table containing the column-wise average of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$avg_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-w_avg_by}{}}}
+\subsection{Method \code{w_avg_by()}}{
+Creates a new table containing the column-wise weighted average of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$w_avg_by(wcol, by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{wcol}}{String denoting the name of the column to use as weights.}
+
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-median_by}{}}}
+\subsection{Method \code{median_by()}}{
+Creates a new table containing the column-wise median of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$median_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-var_by}{}}}
+\subsection{Method \code{var_by()}}{
+Creates a new table containing the column-wise variance of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$var_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-std_by}{}}}
+\subsection{Method \code{std_by()}}{
+Creates a new table containing the column-wise standard deviation of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$std_by(by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-percentile_by}{}}}
+\subsection{Method \code{percentile_by()}}{
+Creates a new table containing the column-wise percentile of each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$percentile_by(percentile, by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{percentile}}{Numeric scalar between 0 and 1 denoting the percentile to compute.}
+
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-count_by}{}}}
+\subsection{Method \code{count_by()}}{
+Creates a new table containing the number of rows in each group.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$count_by(col, by = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{col}}{String denoting the name of the new column to hold the counts of each group.}
+
+\item{\code{by}}{String or list of strings denoting the names of the columns to group by.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-cross_join}{}}}
+\subsection{Method \code{cross_join()}}{
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$cross_join(table, on = character(), joins = character())}\if{html}{\out{
}}
+}
+
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-natural_join}{}}}
+\subsection{Method \code{natural_join()}}{
+Creates a new table containing all the rows and columns of this table, plus additional columns containing data
+from the right table. For columns appended to the left table (joins), row values equal the row values from the
+right table where the key values in the left and right tables are equal.
+If there is no matching key in the right table, appended row values are NULL.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$natural_join(table, on = character(), joins = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{table}}{TableHandle referencing the table to join with.}
+
+\item{\code{on}}{String or list of strings denoting the names of the columns to join on.}
+
+\item{\code{joins}}{String or list of strings denoting the names of the columns to add from `table`.}
+}
+\if{html}{\out{
}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-exact_join}{}}}
+\subsection{Method \code{exact_join()}}{
+Creates a new table containing all the rows and columns of this table, plus additional columns containing data
+from the right table. For columns appended to the left table (joins), row values equal the row values from the
+right table where the key values in the left and right tables are equal.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$exact_join(table, on = character(), joins = character())}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{table}}{TableHandle referencing the table to join with.}
+
+\item{\code{on}}{String or list of strings denoting the names of the columns to join on.}
+
+\item{\code{joins}}{String or list of strings denoting the names of the columns to add from `table`.}
+}
+\if{html}{\out{
}}
+}
+}
+\if{html}{\out{
}}
+\if{html}{\out{}}
+\if{latex}{\out{\hypertarget{method-TableHandle-sort}{}}}
+\subsection{Method \code{sort()}}{
+Creates a new table containing all the rows and columns of this table, sorted by the specified columns.
+\subsection{Usage}{
+\if{html}{\out{}}\preformatted{TableHandle$sort(order_by, descending = FALSE, abs_sort = FALSE)}\if{html}{\out{
}}
+}
+
+\subsection{Arguments}{
+\if{html}{\out{}}
+\describe{
+\item{\code{order_by}}{String or list of strings denoting the names of the columns to sort by.}
+
+\item{\code{descending}}{Boolean or list of booleans denoting whether to sort in descending order.
+If a list is supplied, it must be the same length as `order_by`.}
+
+\item{\code{abs_sort}}{Boolean or list of booleans denoting whether to sort by absolute value.
+If a list is supplied, it must be the same length as `order_by`.}
+}
+\if{html}{\out{
}}
+}
+\subsection{Returns}{
+A TableHandle referencing the new table.
+}
+}
+}