Сравните несколько IP-адресов с несколькими CIDRS в R - PullRequest
0 голосов
/ 10 мая 2018

Я хочу определить, какие CIDR соответствуют моим IP-адресам.Я попытался использовать iptools, но векторы не одного размера.

Example: 192.168.100.10
CIDR match: 192.168.100.0/24 or 192.168.0.0/16

1 Ответ

0 голосов
/ 11 мая 2018

Пока не появится более оптимизированный метод, вы можете сделать это полностью с помощью iptools (с небольшим количеством смазки для локтя):

library(iptools)
library(purrr)

ips <- "192.168.100.10"

cidrs <- c("192.168.100.0/24", "192.168.0.0/16")

map_df(ips, ~{
  map2_dfr(.x, cidrs, ~{
    ips_in_cidrs(.x, .y) %>% 
      mutate(cidr = .y)
  })
}) 
## # A tibble: 2 x 3
##   ips            in_cidr cidr            
##   <chr>          <lgl>   <chr>           
## 1 192.168.100.10 TRUE    192.168.100.0/24
## 2 192.168.100.10 TRUE    192.168.0.0/16 
...