Skip to content

Important: These functions are for expert R programmers only. You should only use them if you feel comfortable manipulating low level R data structures at the C level. We export them at the R level in order to make it easy to prototype C code. They don't perform any type checking and can crash R very easily (try to take the CAR of an integer vector --- save any important objects beforehand!).

Usage

new_node(car, cdr = NULL)

node_car(x)

node_cdr(x)

node_caar(x)

node_cadr(x)

node_cdar(x)

node_cddr(x)

node_poke_car(x, newcar)

node_poke_cdr(x, newcdr)

node_poke_caar(x, newcar)

node_poke_cadr(x, newcar)

node_poke_cdar(x, newcdr)

node_poke_cddr(x, newcdr)

node_tag(x)

node_poke_tag(x, newtag)

Arguments

car, newcar, cdr, newcdr

The new CAR or CDR for the node. These can be any R objects.

x

A language or pairlist node. Note that these functions are barebones and do not perform any type checking.

newtag

The new tag for the node. This should be a symbol.

Value

Setters like node_poke_car() invisibly return x modified in place. Getters return the requested node component.

See also

duplicate() for creating copy-safe objects and base::pairlist() for an easier way of creating a linked list of nodes.