有没有办法有一个格式良好的摘要输出(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()
的“原始”捕获输出
答案 0 :(得分:5)
为了找出这里发生了什么,你必须深入研究这些方法。 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
个对象)将恢复为{{1}函数,它只是以相当原始的形式捕获输出。
如果你很幸运,R2HTML:::HTML.default
和summary.lm
的内部结构非常相似,你可以说summary.biglm
并完成它,但这不起作用,因为HTML.summary.biglm <- R2HTML:::HTML.summary.lm
和summary.lm
的内部结构太不相同了。
接下来要做的就是转储summary.biglm
的定义并通过其内部工作,根据需要进行更改(例如,第一遍:使用R2HTML:::HTML.summary.lm
转储{{1} }到一个文件;在文件顶部添加一些代码来定义dput()
作为该函数;尝试R2HTML:::HTML.summary.lm
并确定您遇到错误的位置(可能使用HTML.summary.biglm
来跟踪通过);修复文件的相应部分;重复直到完成。
其中一个问题是HTML(summary(LL))
和debug()
的内部结构之间的某些差异不只是装饰性的,而是设计差异 - 例如,summary.lm
包括残差的副本(尝试summary.biglm
或summary.lm
names(summary(L))
符合str(summary(L))
),这对L
对象没有意义。 (这是一个简短的说法,这对我来说是一个太大的工作,作为对SO问题的快速回答......)