The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Following Testoft’s book Spreadsheet Implementation Technology: Basics and Extensions.
The main class is ra_ref
which holds a single relative, absolute, or mixed cell reference. Two logical indicators, rowAbs
and colAbs
, which report whether the row (column) reference is absolute. Also integers rowRef
and colRef
, which either hold absolute row and column or, for a relative reference, an offset.
Two other very convenient, but less general forms for holding cell references:
B4
, B$4
, $B4
, $B$4
(let’s assume found in cell D5
, shall we?)R[1]C[-2]
, R4C[-2]
, R[1]C2
, R4C2
to_string.ra_ref()
converts a single ra_ref
to character.
as.ra_ref.character()
converts a single cell reference in string form to a ra_ref
object.
Note there can be problems converting to/from character, specifically A1 formatted strings, because we don’t know the host cell. A relative row or column reference cannot be resolved without knowing the host cell. So this is a source of warnings and NA
, going both directions.
The cell_addr
class is for absolute cell addresses. It’s a list with two synchronized, equal length integer vectors, row
and col
. It could be a data frame or matrix (and mabye it should be?), but it’s not. Methods [
, [[
, and length
exist. Note that a single cell_addr
object could hold many absolute references.
to_string.cell_addr
converts a cell_addr
object to character, in a vectorized way. The format fo
is an argument. Under the hood, this actually converts each individual cell address into an ra_ref
object, then calls to_string
on it, and returns them as character vector.
as.ra_ref.cell_addr
converts a cell_addr
object to a ra_ref
object and is NOT vectorized.
WIP!
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.