2013-07-19 67 views
9

假設我有一個數據框R。我想將它作爲一個簡單的HTML表格寫入文件。只需<表>,< tr>和< td>標記。如何將R數據框轉換爲簡單的,無格式的html表格?

到目前爲止,這似乎比它應該更難。現在,我試圖用R2THML像這樣:

HTML(dataframe, file=outpath, append=FALSE) 

但後來我得到一個醜陋的,HTML風格的文件看起來可能是這樣說:

<table cellspacing=0 border=1> 
<caption align=bottom class=captiondataframe></caption> 
<tr><td> 
    <table border=0 class=dataframe> 
    <tbody> 
    <tr class= firstline > 
     <th>&nbsp; </th> 
     <th>name </th> 
     <th>donations </th> 
     <th>clicks </th> 
      ... 
    </tr> 
<tr> 
<td class=firstcolumn>1 
</td> 
<td class=cellinside>Black.text 
</td> 
... 
</tbody> 
</table> 
</td></table> 
<br> 

有沒有辦法讓輸出這很簡單(沒有指定邊框,標題,字幕等,而不輸出表內的另一個表)?還是這樣好呢?

+2

我從來沒有用過它' HTML',但我知道'xtable'是一個很好的包(我用它作爲'latex'),它有一個'HTML'選項。 –

回答

15

xtable包可以產生HTML輸出以及乳膠輸出。

# install.packages("xtable") 
library("xtable") 
sample_table <- mtcars[1:3,1:3] 
print(xtable(sample_table), type="html", file="example.html") 

給人,文件example.html在:

<!-- html table generated in R 3.0.1 by xtable 1.7-1 package --> 
<!-- Fri Jul 19 09:08:15 2013 --> 
<TABLE border=1> 
<TR> <TH> </TH> <TH> mpg </TH> <TH> cyl </TH> <TH> disp </TH> </TR> 
    <TR> <TD align="right"> Mazda RX4 </TD> <TD align="right"> 21.00 </TD> <TD align="right"> 6.00 </TD> <TD align="right"> 160.00 </TD> </TR> 
    <TR> <TD align="right"> Mazda RX4 Wag </TD> <TD align="right"> 21.00 </TD> <TD align="right"> 6.00 </TD> <TD align="right"> 160.00 </TD> </TR> 
    <TR> <TD align="right"> Datsun 710 </TD> <TD align="right"> 22.80 </TD> <TD align="right"> 4.00 </TD> <TD align="right"> 108.00 </TD> </TR> 
    </TABLE> 

這可能有更多的選擇可以進一步簡化爲xtableprint.xtable

print(xtable(sample_table, align="llll"), 
     type="html", html.table.attributes="") 

<!-- html table generated in R 3.0.1 by xtable 1.7-1 package --> 
<!-- Fri Jul 19 09:13:33 2013 --> 
<TABLE > 
<TR> <TH> </TH> <TH> mpg </TH> <TH> cyl </TH> <TH> disp </TH> </TR> 
    <TR> <TD> Mazda RX4 </TD> <TD> 21.00 </TD> <TD> 6.00 </TD> <TD> 160.00 </TD> </TR> 
    <TR> <TD> Mazda RX4 Wag </TD> <TD> 21.00 </TD> <TD> 6.00 </TD> <TD> 160.00 </TD> </TR> 
    <TR> <TD> Datsun 710 </TD> <TD> 22.80 </TD> <TD> 4.00 </TD> <TD> 108.00 </TD> </TR> 
    </TABLE> 

(可以直接與file參數print.xtable如前面例子中的一個文件。)

+0

我看'?xtable',沒有'type'參數給我。當我指定它被忽略時,我總是得到LaTeX。它只在我使用'x <-xtable(...)'時才起作用,然後使用'print.xtable(x,type =「html」)''。 –

+0

@Someone'type'參數*是* print調用的參數,而不是'xtable'調用。爲了方便起見,我在'print'調用中嵌套了'xtable'調用。 –

4

答案其實很簡單,如果你使用xtable。 (感謝Señor的O可以在提示。)

install.packages("xtable") 
library(xtable) 
out_table_x <- xtable(out_table) 
print(out_table_x, type='html', file="./example.html") 
2

更漂亮,但速度慢選項:

library(htmlTable) 
htmlTable(iris) 
0
to_html_table<-function(dataframe){ 
tags$table(
    tags$thead(tags$tr(lapply(colnames(dataframe), function(x) tags$th(x)))), 
    tags$tbody(
    apply(dataframe,1, function(x) { tags$tr(lapply(x, function(y) tags$td(y)))}) 
)) 
} 
+1

請編輯你的答案並添加一個解釋。只有代碼的答案是不鼓勵的,可能會被刪除,因爲它們沒有解釋任何東西。 – WebDevBooster

+0

[作爲評論系統的一部分](https://stackoverflow.com/review/low-quality-posts/18708495),我編輯了你的答案來修正格式。你應該聽WebDevBooster並解釋你的代碼。 –

相關問題