2014-05-14 195 views
1

我解析了很多網站,並且我編寫了一個腳本,通過單獨文件中的數千個鏈接進行循環。然而,我經歷過有時候R無法加載一個鏈接,並且它停在循環的中間,導致許多其他的URL未被解析。所以我嘗試使用tryCatch,所以腳本忽略了這種情況並繼續解析下一個url。不過,我最近經歷了tryCatch產生下面的錯誤。R,tryCatch錯誤

gethelp.url = 'http://forums.autodesk.com/t5/Vault-General/bd-p/101' 
gethelp.df =tryCatch(htmlTreeParse(gethelp.url, useInternalNodes = T), error = function() next) 

Error in value[[3L]](cond) : unused argument (cond) 
Calls: withRestarts ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous> 
Execution halted 

的亂七八糟的東西,有時它工作得很好,有時它拋出此錯誤消息,即使同一腳本解析的網址相同。

任何人都可以給我一個指導如何解釋這個錯誤信息?我閱讀了文檔,但我無法找到很多見解。

回答

5

我認爲你的函數必須有cond作爲參數 - 至少這是我以前用過tryCatch(),而你的錯誤信息似乎表明它是問題。

嘗試以下方法: gethelp.df =tryCatch(htmlTreeParse(gethelp.url, useInternalNodes = T), error = function(cond) next)

注意,上面的行還是會引發錯誤,B/C的例子的代碼不是在一個循環。所以我只是用NA替換next,它工作正常。

編輯:針對OP的評論,我建議您嘗試以下操作:

gethelp.df =tryCatch(htmlTreeParse(gethelp.url, useInternalNodes = T), error = function(cond)"skip") 
if(gethelp.df=="skip"){next} 
+0

太感謝你了!順便說一句,即使它在循環'下一個'似乎並不奏效。我不知道爲什麼..但你有沒有使用tryCatch,然後在一起? – user1486507

+0

你可以嘗試用''skip'替換'next'',然後執行'if(gethelp.df ==「skip」){next}'。合理?因爲它可能試圖將'next'分配給'gethelp.df' ...所以不要這麼做,只需將一個關鍵詞(「skip」)分配給gethelp.df,然後在'if( )'語句,如果它是TRUE,則使用'next'。 – rbatt

+0

我明白了..非常感謝! – user1486507