Re: [問題] parSapply問題

看板R_Language作者 (天)時間9年前 (2016/03/18 00:40), 9年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《SFMAndroid (安卓發送)》之銘言: : [問題類型]: : : 效能諮詢(我想讓R 跑更快) : : [軟體熟悉度]: : 請把以下不需要的部份刪除 : 入門(寫過其他程式,只是對語法不熟悉) : : [問題敘述]: : 請簡略描述你所要做的事情,或是這個程式的目的 : 爬PTT文章,原本是用sapply加上自定義函數, : 但實在跑太久,想說用snow::parSapply會不會比較快, : 但一直遇到問題@@ : 除了找不到所有httr裡的函數外 : 即使用clusterEvalQ把所有未定義的函數都定義後, : 就出現is.url(url) is not true的無限輪迴... : 但改回用sapply除了跑很久外完全正常, : 請問有沒有大大知道該怎麼辦?? : 感謝~ : [程式範例]: : : https://gist.github.com/anonymous/a45f6d04254adb27e64a : : [環境敘述]: : : R version 3.2.1 (2015-06-18) : Platform: i386-w64-mingw32/i386 (32-bit) : Running under: Windows 8 x64 (build 9200) : locale: : [1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 : [2] LC_CTYPE=Chinese (Traditional)_Taiwan.950 : [3] LC_MONETARY=Chinese (Traditional)_Taiwan.950 : [4] LC_NUMERIC=C : [5] LC_TIME=Chinese (Traditional)_Taiwan.950 : attached base packages: : [1] parallel stats graphics grDevices utils datasets methods base : : [關鍵字]: : : snow, parallel computing : 不要去寫入硬碟在讀取,我不確定在平行時候開啟硬碟讀取會不會出事... 但是我覺得你可以不用去寫入硬碟,再重新讀入虛耗時間... 好讀版:http://pastebin.com/TKN2jWHr 然後我也不推薦用XML,我比較建議使用xml2 參考#1MbXOkFc (R_Language) library(xml2) library(RCurl) library(magrittr) library(stringi) i <- 2793 data <- NULL repeat{ url.list <- try(paste(i, '.html', sep='') %>% paste('https://www.ptt.cc/bbs/Boy-Girl/index', ., sep='') %>% xml2::read_html() %>% xml2::xml_find_all("//div[@class='title']/a[@href]") %>% xml2::xml_attr("href"), silent = TRUE) if (any(grepl("Error", url.list))) break data %<>% c(url.list) i <- i + 1 } data %<>% paste('https://www.ptt.cc', ., sep='') getDoc <- function(line){ xml2::read_html(line, "UTF-8") %>% xml2::xml_find_one("//div[@id='main-content']") %>% xml_text %>% stri_conv("UTF-8", "Big5") # stri_conv for windows } st <- proc.time() articles <- sapply(data, getDoc) proc.time() - st # user system elapsed # 3.35 3.70 7.21 -- R資料整理套件系列文: magrittr #1LhSWhpH (R_Language) http://tinyurl.com/1LhSWhpH data.table #1LhW7Tvj (R_Language) http://tinyurl.com/1LhW7Tvj dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/1LhpJCfB dplyr(下) #1Lhw8b-s (R_Language) tidyr #1Liqls1R (R_Language) http://tinyurl.com/1Liqls1R -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.218.152.118 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1458232801.A.127.html

03/18 20:43, , 1F
喔喔感謝板大 code變得超簡潔 也快很多 本來是因為
03/18 20:43, 1F

03/18 20:43, , 2F
不熟xml2 想說偷懶用以前寫的就好XD
03/18 20:43, 2F
稍微研究一下xml2吧,我也不知道你要的是什麼@@ 你的程式,html那個變數我跑不出來(攤手 ※ 編輯: celestialgod (140.109.73.237), 03/18/2016 21:11:21
文章代碼(AID): #1MwjtX4d (R_Language)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1MwjtX4d (R_Language)