This package provides classes for working with IP addresses, inspired by the Python ipaddress module.
Here are some of the features:
You can install the released version of ipaddress from CRAN with:
Or you can install the development version from GitHub:
This package provides the ip_address()
and ip_network()
classes, which can be used as standalone vectors or as columns within data frames and tibbles.
library(tidyverse)
library(ipaddress)
tibble(
address = ip_address(c("192.168.0.1", "2001:db8::8a2e:370:7334")),
network = ip_network(c("192.168.100.0/22", "2001:db8::/80"))
)
#> # A tibble: 2 x 2
#> address network
#> <ip_addr> <ip_netwk>
#> 1 192.168.0.1 192.168.100.0/22
#> 2 2001:db8::8a2e:370:7334 2001:db8::/80
Input character vectors are validated as they are parsed. Invalid inputs raise a warning and are replaced with NA
.
ip_address(c("255.255.255.255", "255.255.255.256"))
#> Warning: Problem on row 2: 255.255.255.256
#> <ip_address[2]>
#> [1] 255.255.255.255 <NA>
Functions are provided to enable common tasks:
tibble(network = ip_network(c("192.168.100.0/22", "2001:db8::/80"))) %>%
mutate(
first = network_address(network),
last = broadcast_address(network),
ipv6 = is_ipv6(network)
)
#> # A tibble: 2 x 4
#> network first last ipv6
#> <ip_netwk> <ip_addr> <ip_addr> <lgl>
#> 1 192.168.100.0/22 192.168.100.0 192.168.103.255 FALSE
#> 2 2001:db8::/80 2001:db8:: 2001:db8::ffff:ffff:ffff TRUE
Please note that the ‘ipaddress’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.