[問題] 用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