R: форматированный вывод из biglm - PullRequest
1 голос
/ 05 мая 2011

Есть ли способ получить красиво отформатированный вывод резюме (biglm)? R2HTML, который очень хорошо работает для сводки (lm), вообще не сохраняет форматирование.

library(biglm)
library(R2HTML)
d <- data.frame(x=runif(100),y=runif(100))
L <- lm(y~x,data=d)
LL <- biglm(y~x,data=d)
HTML(summary(L),file="tmp1.html")
HTML(summary(LL),file="tmp2.html")

Файл HTML tmp1.html имеет красивое форматирование: файл HTML tmp2.html содержит «необработанный» захваченный вывод из summary.biglm()

1 Ответ

5 голосов
/ 05 мая 2011

Чтобы узнать, что здесь происходит, вам нужно немного покопаться в методах.HTML - это универсальная функция, поэтому она ищет конкретную функцию, которую она может использовать для конкретного объекта, в зависимости от его класса.Результаты summary(lm(...)) имеют класс summary.lm;эквивалент для biglm равен (неудивительно) summary.biglm.Если вы запустите

methods("HTML")

, вы увидите все методы, определенные для HTML;большинство из них имеют звездочки после имен, что указывает на то, что они скрыты в пространстве имен пакета R2HTML.Чтобы увидеть метод для класса foo, вам нужно R2HTML:::foo.Существует функция R2HTML:::HTML.summary.lm, но нет соответствующей функции HTML.summary.biglm, поэтому вызов HTML(summary(LL)) (где LL - это объект biglm) превращается в функцию R2HTML:::HTML.default, которая просто захватывает вывод в довольно сыром видеформа.

Если вам повезло, и внутренние структуры summary.lm и summary.biglm были достаточно похожи, вы могли бы просто сказать HTML.summary.biglm <- R2HTML:::HTML.summary.lm и покончить с этим, но это не работает, потому что внутренние структурыsummary.lm и summary.biglm слишком разные.

Следующее, что нужно сделать, - это сбросить определение R2HTML:::HTML.summary.lm и поработать над его внутренностями, изменив его соответствующим образом (например, для первого прохода: используйте dput() для выгрузки R2HTML:::HTML.summary.lm в файл, добавьте немного кода вверху файла, чтобы определить HTML.summary.biglm в качестве этой функции, попробуйте HTML(summary(LL)) и определите, где вы столкнулись с ошибкой (возможно, с использованием * 1033)* проследить); исправить соответствующий фрагмент файла; повторять до завершения.

Одна из проблем заключается в том, что некоторые различия между внутренними структурами summary.lm и summary.biglm не являются просто косметическими, но есть конструктивные различия - например, summary.lm включает в себя копию остатков (попробуйте names(summary(L)) или str(summary(L)), где L - это lm fit), что просто не имеет смысла для biglm объект. (Этокороткий способ сказать, что это оказалось слишком большой работой для меня, чтобы быстро ответить на такой вопрос ...)

Удачи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...