[问题] 用if想让R暂停, 但R没有暂停

楼主: augustana (微小的希望)   2018-05-03 18:58:09
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
我在爬一个网页, 但如果我爬得太快它会抓不到
因为有试过让他常态性的休息, 但休息时间太短也不行
所以我设了一个if条件, 抓不到的时候就休息60秒
但他没有执行 不知道是不是哪里出了问题
[程式范例]:
if(a==-1) { Sys.sleep(60)
subdoc <- GET(suburl, config = set_cookies('JSESSIONID' =
'8F0C390B5E686300BC04AA763900EB6D'))
json <- xml_text(xml_find_all(content(subdoc), '/html/body'))
}
[环境叙述]:
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Simplified)_People's Republic of China.936
[2] LC_CTYPE=Chinese (Simplified)_People's Republic of China.936
[3] LC_MONETARY=Chinese (Simplified)_People's Republic of China.936
[4] LC_NUMERIC=C
[5] LC_TIME=Chinese (Simplified)_People's Republic of China.936
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] jsonlite_1.5 httr_1.3.1 xml2_1.0.0
loaded via a namespace (and not attached):
[1] compiler_3.4.0 R6_2.2.0 tools_3.4.0 curl_2.3 Rcpp_0.12.13
[关键字]:
Sys.sleep, if
作者: celestialgod (天)   2018-05-04 05:36:00
你的a怎么来的没写
楼主: augustana (微小的希望)   2018-05-04 16:43:00
a <- regexpr('rateList',json) 我如果有抓成功, json会有'ratelist'字串, 没有成功就会找不到, a在环境里面是atomic[1:1]-1 我把条件改成a[1]=-1试试我改a[1]==-1也没用说, 他没休息QQ
作者: kokolotl (nooooooooooo)   2018-05-04 17:49:00
不知道你的a长怎样,你先把a或是a[1]印出来看看要==啥吧
作者: cywhale (cywhale)   2018-05-04 23:21:00
也要看json是什么 字串?或是char vectors? 才知道怎么比
楼主: augustana (微小的希望)   2018-05-07 13:58:00
> class(json) [1] "character"> a[1] [1] -1
作者: andrew43 (讨厌有好心推文后删文者)   2018-05-07 15:43:00
目前还是看不出来哪里有问题... 你如何确认有无暂停呢?另可在sleep之前加上一句cat("a=", a, "\n")帮忙判断
楼主: augustana (微小的希望)   2018-05-07 15:52:00
因为如果有暂停的话他会停一分钟继续跑, 不过现在的状况是他会马上跑出error, 是因为json = ''产生的errorcat("a=", a, "\n")这句是什么意思呀完整版的code请参考 https://ideone.com/SALda0 感谢~~
作者: kokolotl (nooooooooooo)   2018-05-07 16:00:00
> regexpr("aaa","")[1]==-1 [1] TRUE你的程式没跑到那个if就挂了吧XD?
楼主: augustana (微小的希望)   2018-05-07 16:05:00
什么意思 有跑到那里啦XD那个是在更后面的动作
作者: kokolotl (nooooooooooo)   2018-05-07 16:16:00
cat那段可以让你知道有没有进到if 有进去没停就神奇了
楼主: augustana (微小的希望)   2018-05-07 16:39:00
好我来试试看~~再来update~~感温~~
作者: kokolotl (nooooooooooo)   2018-05-07 16:45:00
避开循环手动跑一次查错在哪边,应该比较快XD
楼主: augustana (微小的希望)   2018-05-07 16:57:00
我刚刚放了cat 现在有一个感觉 就是 他其实成功很多次因为我已经看到五个a=-1惹, 还没停, 所以出error应该是60秒不够的关系XD BTW我有避开循环测试 但都会成功XD

Links booklink

Contact Us: admin [ a t ] ucptt.com