2011-05-05 128 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任務的一小段路......)

好運...