我有一个具有域名列的数据框。我想通过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] 删除。
我来说两句