18

假设我在R中有一个数据框。我想将它作为一个简单的 HTML 表写入文件。只有 <table>、<tr> 和 <td> 标签。

到目前为止,这似乎比应该的要难。现在我正在尝试像这样使用 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>

有没有办法获得更简单的输出(不指定边框、标题、标题等。不输出另一个表的表)?或者这是最好的吗?

4

5 回答 5

25

xtable包可以生成 HTML 输出以及 LaTeX 输出。

# 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参数 to的文件,print.xtable如上例所示。)

于 2013-07-19T16:15:11.543 回答
5

一个更漂亮但更慢的选择:

library(htmlTable)
htmlTable(iris)
于 2016-09-07T15:19:44.327 回答
5
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)))})
  ))
}
于 2018-02-03T00:29:17.950 回答
5

您还可以查看tableHTML为此开发的软件包。

library(tableHTML)
mtcars %>%
  tableHTML()

并在控制台上打印 HTML:

tableHTML(mtcars[1:2, 1:3]) %>% 
  print(viewer = FALSE)

# <table style="border-collapse:collapse;" class=table_9302 border=1>
#   <thead>
#   <tr>
#   <th id="tableHTML_header_1"> </th>
#   <th id="tableHTML_header_2">mpg</th>
#   <th id="tableHTML_header_3">cyl</th>
#   <th id="tableHTML_header_4">disp</th>
#   </tr>
#   </thead>
#   <tbody>
#   <tr>
#   <td id="tableHTML_rownames">Mazda RX4</td>
#   <td id="tableHTML_column_1">21</td>
#   <td id="tableHTML_column_2">6</td>
#   <td id="tableHTML_column_3">160</td>
#   </tr>
#   <tr>
#   <td id="tableHTML_rownames">Mazda RX4 Wag</td>
#   <td id="tableHTML_column_1">21</td>
#   <td id="tableHTML_column_2">6</td>
#   <td id="tableHTML_column_3">160</td>
#   </tr>
#   </tbody>
#   </table>

如果需要,还可以使用add_css_函数族使用 CSS 设置表格样式。

包和教程(小插图)的详细信息在这里

于 2019-03-13T11:26:05.717 回答
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")
于 2013-07-19T16:03:34.330 回答