2012-06-21 6 views
1

Я создаю повторяющийся HTML-отчет, отображающий таблицы и графики, вычисленные с помощью R. Я использую функции из пакета R2HTML, встроенного в цикл for. У меня нет прав администратора на моей машине. В какой-то момент в вычислениях, иногда я получаю следующее сообщение об ошибке:R2HTML не может открыть соединение

Ошибка в файле (файл, IfElse (добавить, «а», «ж»)): не может открыть соединение В дополнение: Предупреждение сообщение: В файле (файл, IfElse (добавить, "а", "ж")): не может открыть файл P:/Мои документы/R/test.html ': отказано в

Этот не происходит при каждом запуске или в одной и той же точке кода. я могу получить ту же ошибку, когда я пытаюсь запустить следующий простой код:

require(R2HTML) 

.HTML.file = file.path('P:/My Documents/R' , 'test.html') 
# To set the access path to the HTML file that will be created 

cat(paste("<html><head><title>", 'test.html', "</title></head>", sep = ""), file = .HTML.file , append = FALSE) 
# To create and initiate the HTML file 

for(i in 1:100) 
{ 
    HTML('Test') 
} 
# To write the same line to the HTML file repeteadly 

Большую часть времени этот цикл может работать без каких-либо проблем, но иногда он будет производить вышеуказанную ошибку (иногда в начале цикл, иногда в конце). Кто-нибудь знает, что вызывает это? Я использую R-2.15.0 на компьютере Windows xp pro. Если кто-нибудь может мне помочь, я буду очень любезен. Спасибо.

+0

У меня было это раньше. Это происходит потому, что вы пытаетесь написать (добавить) в файл, пока операционная система еще не завершила предыдущую операцию. Чтобы исправить это, возможно, наилучшим вариантом является добавление данных в объект в памяти, а затем запись в файл только после завершения цикла. – Andrie

+0

Я вижу ... Однако я использую некоторые конкретные функции из пакета R2HTML (HTML.data.frame, HTMLplot) для добавления фреймов данных, графиков и текста в файл HTML в определенном порядке. Если бы я писал только текст, я бы мог добавить его к переменной в памяти и использовать только один вызов функции HTML для ее экспорта, но здесь я не уверен, что смогу сделать что-то подобное. Если проблема связана с добавлением файла слишком быстро, знаете ли вы, есть ли способ сказать R замедлить работу в определенных точках вычислений? В любом случае, спасибо за ваш ответ. – Vidac

+0

Вы пишете файл HTML, который является просто текстом. Настолько ясно, что добавление к символьному вектору - это точно одно и то же. Просто запишите вывод 'HTML()' и объедините его с вашими предыдущими результатами, используя 'c()'. Затем в конце цикла выгрузите его в файл. Это действительно работает - я это сделал. – Andrie

ответ

0

Как было предложено Андри в комментариях, решение состоит в том, чтобы захватить вывод функций R2HTML в строковых объектах и ​​использовать только один вызов функции HTML для создания файла HTML после цикла.

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