r - 如何在 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() 不是一个好主意命令 - 作为任何编程语言的一般规则。 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/

相关文章:

csv - Laravel 5.2 League CSV 输出在末尾添加带有数字的额外行

ms-access - MS Access 2013 仅显示启动表单,仅显示其他内容

r - 计算R中每分钟的平均值

r - 如何在 lm() 之后在 R 中复制 Stata 的 "margins at"

android-fragments - 如何在android中使searchView的提示居中?

pandas - 水平排列两个地 block

google-visualization - 谷歌半 donut 饼图 : is it possib

python - 建立新连接失败

matrix - 将下三角矩阵转换为向量 [JULIA]

laravel - 如何在 Laravel 的 Eloquent 模型中覆盖 ModelNotFou