xptr: Manipulating External Pointers

ci License CRAN Dependencies r-universe Last Commit Documentation

About

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

Usage

library(xptr)
a <- new_xptr("0x11a888090")
b <- new_xptr("0x11a888098")
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"
>

Installation

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")

Author

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.

License

MIT

Initially created: Thu Oct 9 08:43:55 AM CDT 2025
Last modified: Thu Oct 09 08:46:36 CDT 2025