允许重新检查TRUE / FALSE

时间:2016-06-21 19:46:07

标签: r

如何编写命令(功能),允许“无限循环”检查互联网连接是否为TRUE否则等待,然后重新检查等等......

这是我的意思:

havingIP <- function() { if (.Platform$OS.type == "windows") {
ipmessage <- system("ipconfig", intern = TRUE) } else { 
ipmessage <- system("ifconfig", intern = TRUE) }
validIP <- "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.]){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
any(grep(validIP, ipmessage)) }

以上解决方案的来源和信誉来自:

How to determine if you have an internet connection in R

if(havingIP()){ source(....) } else { for(i in 1:5) { Sys.sleep(1); cat(i) }}  

这样的事情,但这不合适,因为我只想执行命令source一次。

while(TRUE){ 
if(havingIP()){ print("working") } else { for(i in 1:5) { Sys.sleep(1);  
cat(i) }}  
}

那么如何在没有loop的情况下运行它,每隔5秒检查一次,如果互联网连接没有等待另外5秒,依此类推,直到互联网开启,然后只执行一次source就是这样。

抱歉,我试图搜索这个解决方案,我确定有人问了类似的东西,但找不到任何东西,因为我不知道如何搜索它。谢谢!

2 个答案:

答案 0 :(得分:2)

您好像在寻找break

while (TRUE) {
    if (havingIP()) {
        print("working") # execute what you want here
        break            # and if we ever reach here, then exit the while loop
    } else {
        for (i in 1:5) {
            Sys.sleep(1)
            cat(i)
        }
    }
}

答案 1 :(得分:2)

对李的回答更简单:

while(!havingIP()) for(i in 1:5) {Sys.sleep(1); cat(i)}
source(...)

这将暂停执行,直到havingIP返回TRUE。