[問題] 用if想讓R暫停, 但R沒有暫停

看板R_Language作者 (微小的希望)時間7年前 (2018/05/03 18:58), 編輯推噓4(4021)
留言25則, 5人參與, 7年前最新討論串1/1
[問題類型]: 程式諮詢(我想用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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.97.165 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1525345091.A.DED.html

05/04 05:36, 7年前 , 1F
你的a怎麼來的沒寫
05/04 05:36, 1F

05/04 16:43, 7年前 , 2F
a <- regexpr('rateList',json) 我如果有抓成功, json
05/04 16:43, 2F

05/04 16:47, 7年前 , 3F
會有'ratelist'字串, 沒有成功就會找不到, a在環境裡面
05/04 16:47, 3F

05/04 16:48, 7年前 , 4F
是atomic[1:1]-1 我把條件改成a[1]=-1試試
05/04 16:48, 4F

05/04 16:58, 7年前 , 5F
我改a[1]==-1也沒用說, 他沒休息QQ
05/04 16:58, 5F

05/04 17:49, 7年前 , 6F
不知道你的a長怎樣,你先把a或是a[1]印出來看看要==啥吧
05/04 17:49, 6F

05/04 23:21, 7年前 , 7F
也要看json是什麼 字串?或是char vectors? 才知道怎麼比
05/04 23:21, 7F

05/07 13:58, 7年前 , 8F
> class(json) [1] "character"
05/07 13:58, 8F

05/07 13:59, 7年前 , 9F
> a[1] [1] -1
05/07 13:59, 9F

05/07 15:43, 7年前 , 10F
目前還是看不出來哪裡有問題... 你如何確認有無暫停呢?
05/07 15:43, 10F

05/07 15:47, 7年前 , 11F
另可在sleep之前加上一句cat("a=", a, "\n")幫忙判斷
05/07 15:47, 11F

05/07 15:52, 7年前 , 12F
因為如果有暫停的話他會停一分鐘繼續跑, 不過現在的狀
05/07 15:52, 12F

05/07 15:52, 7年前 , 13F
況是他會馬上跑出error, 是因為json = ''產生的error
05/07 15:52, 13F

05/07 15:53, 7年前 , 14F
cat("a=", a, "\n")這句是什麼意思呀
05/07 15:53, 14F

05/07 15:59, 7年前 , 15F
完整版的code請參考 https://ideone.com/SALda0 感謝~~
05/07 15:59, 15F

05/07 16:00, 7年前 , 16F
> regexpr("aaa","")[1]==-1 [1] TRUE
05/07 16:00, 16F

05/07 16:00, 7年前 , 17F
你的程式沒跑到那個if就掛了吧XD?
05/07 16:00, 17F

05/07 16:05, 7年前 , 18F
什麼意思 有跑到那裏啦XD
05/07 16:05, 18F

05/07 16:05, 7年前 , 19F
那個是在更後面的動作
05/07 16:05, 19F

05/07 16:16, 7年前 , 20F
cat那段可以讓你知道有沒有進到if 有進去沒停就神奇了
05/07 16:16, 20F

05/07 16:39, 7年前 , 21F
好我來試試看~~再來update~~感溫~~
05/07 16:39, 21F

05/07 16:45, 7年前 , 22F
避開迴圈手動跑一次查錯在哪邊,應該比較快XD
05/07 16:45, 22F

05/07 16:57, 7年前 , 23F
我剛剛放了cat 現在有一個感覺 就是 他其實成功很多次
05/07 16:57, 23F

05/07 16:57, 7年前 , 24F
因為我已經看到五個a=-1惹, 還沒停, 所以出error應該是
05/07 16:57, 24F

05/07 16:58, 7年前 , 25F
60秒不夠的關係XD BTW我有避開迴圈測試 但都會成功XD
05/07 16:58, 25F
文章代碼(AID): #1Qwkj3tj (R_Language)
文章代碼(AID): #1Qwkj3tj (R_Language)