ошибка rgelocate - страна для каждого IP-адреса

Я не могу заставить rgelocate работать должным образом. Мне нужно иметь возможность определить, находится ли IP-адрес в Австралии или нет.

У меня есть список IP-адресов в csv. Однако я предоставил пример кода ниже и получил следующую ошибку:

Error in maxmind_(ips, normalizePath(path.expand(file)), fields) : 
  Not compatible with STRSXP: [type=list].

Я гуглил и искал решение этой проблемы, но ничего из того, что я нашел, не сработало на сегодняшний день, и я был бы очень признателен, если бы кто-нибудь знал решение.

Пакет rgelocate успешно загружен, и файл GeoLite2-Country.mmdb находится там, где он должен находиться в папке extdata.

library(rgeolocate)

ip_lst <-
  data.frame(
    "ip_lst" = c(
      "27.33.27.39",
      "203.219.204.84",
      "203.5.106.68",
      "180.150.74.11",
      "193.116.238.48",
      "1.157.7.35",
      "61.69.150.57",
      "155.143.204.211"
    )
  )

file <- system.file("extdata","GeoLite2-Country.mmdb", package = "rgeolocate")
results <- maxmind(ip_lst, file, c("continent_name", "country_code", "country_name"))
results

Я пробовал несколько версий кода Maxmind безуспешно. Заранее благодарен за любую помощь.


person Keelin    schedule 12.05.2020    source источник


Ответы (1)


Вы создали фрейм данных с именем ip_lst, содержащий одну переменную с именем ip_lst, что не является неправильным, но может привести к путанице. Проблема здесь в том, что функция maxind ожидает символьный вектор, а вы предоставляете фрейм данных. Итак, должно работать следующее:

maxmind(ip_lst$ip_lst, file, c("continent_name", "country_code", "country_name"))

  continent_name country_code   country_name
1        Oceania           AU      Australia
2        Oceania           AU      Australia
3        Oceania           AU      Australia
4        Oceania           AU      Australia
5         Europe           GB United Kingdom  # <-- Not an Aussie 8(
6        Oceania           AU      Australia
7        Oceania           AU      Australia
8        Oceania           AU      Australia
person Edward    schedule 12.05.2020
comment
ваше время очень ценится. Я чувствую себя немного чокнутым! Большое спасибо. - person Keelin; 12.05.2020
comment
Да, просто введите: results$ip.address <- ip_lst$ip_lst. Кстати, я выпускник UNSW. :D - person Edward; 12.05.2020
comment
Я только что разобрался и удалил второй запрос! Замечательный Эдуард, большое спасибо. Я работаю здесь уже около 3-х лет......это здорово. Надеюсь, жизнь за пределами UNSW идет хорошо. Спасибо еще раз. - person Keelin; 12.05.2020