我有一个包含域名列的数据框。我想通过 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()
命令 - 作为任何编程语言的一般规则。这主要原因 https://stackoverflow.com/a/4622772/4770166是安全性和可移植性问题。
The pingr https://cran.r-project.org/web/packages/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()
and pingr:::ping_os()
看来该包does使用呼叫system()
。因此,我认为安全问题依然存在 http://www.cplusplus.com/forum/articles/11153/,由于操作系统功能ping
可以被重新定义来做一些完全不同并且可能有害的事情。该包似乎解决了可移植性问题,因为根据操作系统调用不同的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)