2011-05-05 138 views
1

有没有一种方法可以得到格式良好的summary(biglm)输出?对汇总(lm)非常好的R2HTML根本不保留格式。R:biglm的格式化输出

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()

+2

重复的例子,将有助于 – mdsumner 2011-05-05 05:53:48

+0

biglm的语法与lm完全相同:model = lm(Y〜X,data = MyData) - 只需用biglm替换lm即可。而R2HTML很好地用库(R2HTML)打印lm的摘要; HTML(model,file =“filepath”),当我使用biglm而不是lm时,所有格式都会丢失。 – user702432 2011-05-05 06:26:34

回答

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对象)将恢复为R2HTML:::HTML.default函数,该函数仅以相当原始的形式捕获输出。

如果你是幸运的,和summary.lmsummary.biglm内部结构是足够相似,你可以只说HTML.summary.biglm <- R2HTML:::HTML.summary.lm并用它做,但是这并不能工作,因为的summary.lmsummary.biglm内部结构也不同。

接下来要做的事情是要转储R2HTML:::HTML.summary.lm的定义,并通过其胆量工作,改变它作为合适的(例如,对于第一遍:用dput()倾倒R2HTML:::HTML.summary.lm到文件;添加一些代码在该文件的顶部定义HTML.summary.biglm作为功能;尽量HTML(summary(LL))并找出你打一个错误(可能使用debug()跟踪通过);确定适当的文件片段;重复,直到完成

的问题之一。是summary.lmsummary.biglm的内部结构之间的一些差异不仅仅是表面上的,而且是设计差异 - 例如,summary.lm包括残差的副本(尝试names(summary(L))str(summary(L)),其中Llm拟合),这对biglm对象没有意义。 (这是说,这结束了太大的对我进行一个快速的回答一个问题,SO任务的一小段路......)

好运...