首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中得到ping响应

问如何在R中得到ping响应
EN

Stack Overflow用户
提问于 2016-08-21 05:40:47
回答 2查看 798关注 0票数 2

我有一个有域名列的dataframe。我想看看哪个域名存在,点击他们的域名。我可以从下面的函数中得到一个独立的ping响应。

代码语言:javascript
复制
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响应,其中有数千个域名。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-21 06:02:59

使用system()命令不是一个好主意--在任何编程语言中都是这样。主要原因是安全性和可移植性问题。

pingr包提供了一种在R内平一个远程服务器的可能性:

代码语言:javascript
复制
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可以重新定义来做一些完全不同的事情,而且可能是有害的。包似乎解决了可移植性问题,因为根据操作系统调用不同的方法。

票数 6
EN

Stack Overflow用户

发布于 2016-08-21 05:45:35

我们可以用Vectorize包装,并可以处理多个元素

代码语言:javascript
复制
ping1 <- Vectorize(ping)
ping1(c("yahoo.com", "google.com"))
ping1("google.com")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39061174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档