R interface to the Online Encyclopedia of
Integer Sequences (OEIS). Fetches sequence metadata and b-files,
parses them into S3 objects (Sequence, BFile),
and plots terms with ggplot2. Terms are stored as
gmp::bigz values, so precision is not lost for sequences
whose terms exceed double-precision range.
This is the R port of oeis-tools, the Python package by the same author. The public API (function and class names) matches the Python package where R’s type system and idioms allow it.
# install.packages("pak")
pak::pak("oeistools/oeis-tools-R")library(oeis.tools)
fib <- Sequence("A000045")
fib$name
# [1] "Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1."
fib$keyword
# [1] "core" "nonn" "nice" "easy" "look" "hear" "changed"
fib$author
# [1] "N. J. A. Sloane"
fib$data
# gmp bigz vector of the terms given in the OEIS entrySequence also exposes data_raw,
offset, comment, reference,
formula, example, maple,
mathematica, program, xref,
references, revision, m_id,
n_id, time, created,
link (OEIS link field reformatted to
Markdown), and bfile (an embedded BFile).
B-files contain more terms than the main entry (often thousands).
primes <- BFile("A000040")
get_bfile_data(primes)[1:10]
get_bfile_indices(primes)[1:10]
plot_data(primes, n = 1000, color = "royalblue")plot_data() accepts
plot_style = "line" | "joined" | "scatter", p
to layer onto an existing ggplot object, and
return_plot = TRUE to get the object back instead of (or in
addition to) printing it. When a term exceeds double-precision range,
the plot falls back to a signed log10(|value|) axis rather
than truncating or erroring.
create_bfile("A999999", data = c(1, 1, 2, 3, 5, 8), offset = 0, output_path = tempdir())
# [1] "/tmp/RtmpXXXX/b999999.txt"get_xref_ids(fib)
# [1] "A000032" "A000071" "A000108" ...
oeis_keyword_description("core")
# [1] "A fundamental sequence."png_bytes <- get_graph_png(fib) # cached after first call
get_graph_image(fib) # displays inline under IRkernel; else returns raw bytescat(get_bibtex(fib))
# @misc{A000045,
# author = {N. J. A. Sloane},
# title = {A000045: Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.},
# howpublished = {The {O}n-{L}ine {E}ncyclopedia of {I}nteger {S}equences},
# year = {1991},
# month = apr,
# day = {30},
# date = {1991-04-30},
# url = {https://oeis.org/A000045}
# }| Function | Applies to | Description |
|---|---|---|
Sequence(oeis_id) |
— | Fetch and parse an OEIS entry from the JSON API |
BFile(oeis_id) |
— | Fetch and parse a b-file |
create_bfile(oeis_id, data, offset, output_path) |
— | Write a b-file to disk |
check_id(oeis_id) |
— | Validate an OEIS id (^A\d{6}$) |
oeis_url(oeis_id, fmt) |
— | Build an OEIS URL (json, text,
bfile, graph) |
oeis_bfile(oeis_id) |
— | Build a b-file filename |
oeis_keyword_description(tag) |
— | Look up an OEIS keyword tag description |
extract_oeis_ids(text) |
— | Extract A\d{6} ids from text |
get_bfile_data, get_bfile_indices,
get_filename, get_url |
BFile |
Accessors |
get_bfile_info, get_xref_ids,
get_data_values, get_keyword_description,
get_graph_png, get_graph_image,
get_bibtex |
Sequence |
Derived metadata |
plot_data(x, ...) |
BFile |
ggplot2 line/scatter plot |
plot(x, ...) |
Sequence |
Delegates to plot_data on the embedded
BFile |
httr2jsonliteggplot2gmpcitation("oeis.tools")A CITATION.cff file is also provided (GitHub’s “Cite
this repository” button).