如何在R中获得ping响应

尼尔

我有一个具有域名列的数据框。我想通过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()命令不是一个好主意-作为任何编程语言中的一般规则。主要原因是安全性和便携性的问题。

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()因此,我认为仍然存在安全隐患,因为ping可以将OS功能重新定义为做完全不同的事情,甚至可能有害。该软件包确实解决了可移植性问题,因为根据操作系统调用了不同的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章