我有一个包含域名列的数据框。我想通过 ping 他们的域名来查看存在哪个域。我可以从以下函数获得单独的 ping 响应。
ping <- function(x,stderr=FALSE,stdout=FALSE,...){
pingvec <- system2("ping",x,
stderr=FALSE,
stdout=FALSE,...)
if (pingvec == 0) TRUE else FALSE
}
ping("google.com")
[1] TRUE
是否有任何 R 包,我可以在其中获得具有数千个域名的整个列的 ping 响应。
最佳答案
使用system()
不是一个好主意命令 - 作为任何编程语言的一般规则。 main reasons是安全性和可移植性问题。
pingr
包提供了在 R 中 ping 远程服务器的可能性:
library(pingr)
URLs <- c("google.com", "yahoo.com")
sapply(URLs, ping)
# google.com yahoo.com
#[1,] 14.6 171
#[2,] 14.7 171
#[3,] 14.6 171
编辑/评论
查看函数的源代码pingr::ping()
和 pingr:::ping_os()
似乎该包确实使用了对system()
的调用.因此,我认为 security concerns remain , 由于操作系统功能 ping
可以重新定义以做完全不同且可能有害的事情。该包似乎解决的是可移植性问题,因为根据操作系统调用不同的方法。
https://stackoverflow.com/questions/39061174/