我一直在使用 Heuristic Andrew博客中的这个很棒的代码
您可以在其中对 IP 地址进行地理定位。我希望能够在大量(24867 个 IP)IP 地址向量上运行该函数。问题是大多数 IP 地址会返回以下错误:
Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") : cannot open: HTTP status was '404 Not Found'
我假设发生这种情况是因为无法跟踪 IP 地址。
我想创建一个 IP 地址向量的子集,它会给我位置。我想我需要编写另一个函数将 IP 地址放入一个新的工作 IP 地址向量中,或者放入另一个错误 IP 地址向量中。
我想我还需要使用try
ortryCatch
函数?
我是编程新手,所以我不知道如何编写函数。我看过网上的例子,但不太明白。任何意见,将不胜感激。
编辑: 感谢@Thomas 为我指明了正确的道路......
我使用函数 is.error 来确定是否try()
会给我一个错误。返回一个逻辑向量:
is.error <- function(x) inherits(x, "try-error")
尝试使用lapply()
> is.error(
+ try(
+ lapply(X = ls_IPaddresses, FUN = freegeoip)
+ )
+ )
Error in file(con, "r") : cannot open the connection
[1] TRUE
ls_IPaddresses 的长度是 24867,所以我想要一个长度相同的逻辑向量,这样我就可以根据 ls_IPaddresses 对逻辑向量进行子集化。