2014-05-14 3 views
1

Я разбираю много сайтов, и я написал сценарий, который пересекает тысячи ссылок из отдельного файла. Тем не менее, я испытал, что иногда R не может загрузить одну ссылку, и она останавливается в середине цикла, оставляя многие другие URL-адреса неповрежденными. Поэтому я попытался использовать tryCatch, поэтому скрипт игнорирует этот случай и продолжает анализировать следующие URL-адреса. Тем не менее, я недавно испытал, что tryCatch генерирует ниже ошибки.R, tryCatch error

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)

Обратите внимание, что выше линии будет по-прежнему выдаст ошибку, б/с в коде примера не в цикле. Поэтому я только что заменил nextNA, и он отлично работал.

Edit: В ответ на комментарий OP, я предлагаю попробовать следующее:

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

Спасибо так много !! кстати, хотя он в цикле «следующий», похоже, не работает. Я не знаю, почему, хотя .. Вы использовали tryCatch и затем вместе? – user1486507

+0

Вы можете попробовать заменить 'next' на' 'skip'', затем выполните' if (gethelp.df == "skip") {next} '. Имеют смысл? Поскольку это, вероятно, пытается назначить 'next'' gethelp.df' ... поэтому вместо этого просто назначьте ключевую работу («skip») на gethelp.df, затем проверьте ключевое слово в 'if () ', и если это TRUE, используйте' next'. – rbatt

+0

Я вижу .. Большое спасибо! – user1486507

Смежные вопросы