External pointers are a powerful tool supported by the C API of the R environment and language that is documented in the Writing R Extensions manual. But there is limited native support for external pointers on the R side. This package provides some basic tools to verify, create, modify, and tag ‘externalptr’ objects
library(xptr)
<- new_xptr("0x11a888090")
a <- new_xptr("0x11a888098")
b is_xptr(a)
#> [1] TRUE
xptr_address(a)
#> [1] "0x11a888090"
xptr_clear(a)
is_null_xptr(a)
#> [1] TRUE
set_xptr_address(a, xptr_address(b))
xptr_address(a) # default 'pointer' variant
#> [1] "0x11a888098"
> xptr_address(a, FALSE) # non-'pointer' variant
1] "4740120728"
[>
The package is on CRAN and can be installed via
> install.packages("xptr")
The r-univere
page has source and binary builds from the repository version which
may differ from the CRAN version and shows how to install them. Lastly,
one can always rely on remotes::install_github()
:
> remotes::install_github("eddelbuettel/xptr")
Randy Lai created the R package and prepared versions 1.0 to 1.1.3 between 2017 and 2020.
Dirk Eddelbuettel adopted the package in 2025.
MIT