col2int() transforms spreadsheet-style column identifiers (e.g., "A", "B", "AA")
into their corresponding integer indices. This utility is fundamental for
programmatic data manipulation, where "A" is mapped to 1, "B" to 2, and "ZZ"
to 702.
Value
An integer vector representing the column indices. Returns NULL
if the input x is NULL, or an empty integer vector if the length of
x is zero.
Details
The function is designed to handle various input formats encountered during
spreadsheet data processing. In addition to single column labels, it supports
comma or semicolon separated values (e.g., "A,B:C") and range notation using
the colon operator (e.g., "A:C"). When a range is detected, the function
internally expands the notation into a complete sequence of integers
(e.g., 1, 2, 3). This behavior is particularly useful when passing column
selections to functions like wb_to_df() or wb_read().
Input validation ensures that only atomic vectors are processed. If the input
is already numeric or a factor, the function ensures the values fall within
the valid spreadsheet column range before coercion to integers. Note that
the presence of NA values or empty strings in the input will trigger an
error to maintain data integrity during index calculation.
Notes
Comma and semicolon separators are split before range expansion.
Range expansion via
:is performed iteratively until all sequences are resolved into individual integer components.In compliance with spreadsheet software standards, the function validates that indices do not exceed the maximum allowable column limit.
Examples
# Convert standard labels
col2int(c("A", "B", "Z"))
#> [1] 1 2 26
# Convert ranges to integer sequences
col2int("A:C")
#> [1] 1 2 3
# Mix individual columns and ranges
col2int("A,B:C")
#> [1] 1 2 3
col2int(c("A", "C:E", "G"))
#> [1] 1 3 4 5 7
# Handle numeric inputs
col2int(c(1, 2, 26))
#> [1] 1 2 26
