在R中格式化html表

时间:2013-11-25 18:04:08

标签: html r xtable

我想改进使用包html在R中生成的xtable表的外观:

 library(xtable)

 html.table = xtable(<mydataframe>)
 digits(html.table) = 2

我使用以下方式打印表格:

 html.tab = print(html.table, type = "html", floating = FALSE)
 cat(html.tab, file = <html link>)

我希望能够证明表格中的文字,修改标题栏的颜色,更改字体,......

我有什么办法可以在R中实现这个目标吗?

谢谢!

2 个答案:

答案 0 :(得分:9)

使用xtable,您还可以使用<TABLE>参数在html.table.attributes标记中提供类或ID(或内联css)。 一个例子:

print(xtable(head(iris, 10)), type = "html", include.rownames = F, 
      html.table.attributes="class='table-bordered'")

返回:

<!-- html table generated in R 3.0.1 by xtable 1.7-3 package -->
<!-- Fri Jul 11 12:18:15 2014 -->
<TABLE class='table table-bordered'>
<TR> <TH> Sepal.Length </TH> <TH> Sepal.Width </TH> <TH> Petal.Length </TH> <TH> Petal.Width </TH> <TH> Species </TH>  </TR>
<TR> <TD align="right"> 5.10 </TD> <TD align="right"> 3.50 </TD> <TD align="right"> 1.40 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 4.90 </TD> <TD align="right"> 3.00 </TD> <TD align="right"> 1.40 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 4.70 </TD> <TD align="right"> 3.20 </TD> <TD align="right"> 1.30 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 4.60 </TD> <TD align="right"> 3.10 </TD> <TD align="right"> 1.50 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 5.00 </TD> <TD align="right"> 3.60 </TD> <TD align="right"> 1.40 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 5.40 </TD> <TD align="right"> 3.90 </TD> <TD align="right"> 1.70 </TD> <TD align="right"> 0.40 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 4.60 </TD> <TD align="right"> 3.40 </TD> <TD align="right"> 1.40 </TD> <TD align="right"> 0.30 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 5.00 </TD> <TD align="right"> 3.40 </TD> <TD align="right"> 1.50 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 4.40 </TD> <TD align="right"> 2.90 </TD> <TD align="right"> 1.40 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR>
<TR> <TD align="right"> 4.90 </TD> <TD align="right"> 3.10 </TD> <TD align="right"> 1.50 </TD> <TD align="right"> 0.10 </TD> <TD> setosa </TD> </TR>
</TABLE>

此类或id可以在ccs文件中使用,如果您创建多个表,这可能很有用 对于html页面


此外,您可以使用print.results=FALSE参数来捕获字符向量 并使用来自stringr包的函数,例如str_replace()str_replace_all()将类,ID或内联css添加到表格中的其他位置,例如<TD>代码

答案 1 :(得分:2)

这个想法是:

  1. 使用某些css功能
  2. 创建一个用“格式化”表格的css
  3. 使用print.xtable
  4. 创建一个html表格
  5. 创建一个文件,其中包含指向css文件和创建的html表的链接
  6. 所以这里创建“res.html”文件的代码:

    ## a dummy data.frame used as an example
    library(xtable)
    n <- data.frame(x = c(1,1,1,1,1), y = c(0,1,0,1,0))
    ## the html header  
    ## here I am using a link to mystyle.css 
    html.head <- paste("<head>" ,
                 '<link rel="stylesheet" type="text/css" href="mystyle.css"/>',
                 "</head>",sep='\n')
    ## the html body
    html.table <- paste(print(xtable(n),type='html','res.html'), 
                        collapse = "\n")
    html.body <- paste("<body>", html.table,"</body>")
    ## the html file
    write(paste(html.head,html.body,sep='\n'),"res.html")
    

    syle表文件(mystyle.css)可以包含如下内容:

    table {
       max-width: 95%;
       border: 1px solid #ccc;
    }
    
    th {
      background-color: #000000; // background for table header 
      color: #ffffff;
    }
    
    td
    {
       text-align:right;        // justify column
       background-color: #FF0000;
    }