如何使用与gvisTable类似的方法获取R输出正文脚本以格式化HTML表格?

时间:2012-06-05 07:11:52

标签: r knitr

我想了解如何以不需要使用放置在HTML标头中的样式的方式生成格式化HTML表格。 I've broadly asked about this question already,但收到了一个使用标题提及的答案和另一个涉及使用pandoc的答案(更新:请参阅此帖子的底部,了解自提出此问题后发布的新答案。 我想要一个R函数,它将格式化HTML表格所需的所有HTML格式都写在一个地方。

我最近一直在玩gvisTable,它能够在一个地方写下所有相关信息:

以下代码

```{r results='asis'}
simpleData <- data.frame(matrix(1:9, nrow=3))
tab2 <- gvisTable(simpleData, 
                   options=list(width = 600, height = 300))
print(tab2, "chart")
```

会将以下内容输出到R Markdown文档中:

<!-- jsHeader -->
<script type="text/javascript" src="http://www.google.com/jsapi">
</script>
<script type="text/javascript">

// jsData 
function gvisDataTableID273f3d05cccd ()
{
  var data = new google.visualization.DataTable();
  var datajson =
[
 [
 1,
4,
7 
],
[
 2,
5,
8 
],
[
 3,
6,
9 
] 
];
data.addColumn('number','X1');
data.addColumn('number','X2');
data.addColumn('number','X3');
data.addRows(datajson);
return(data);
}

// jsDrawChart
function drawChartTableID273f3d05cccd() {
  var data = gvisDataTableID273f3d05cccd();
  var options = {};
options["allowHtml"] = true;
options["width"] =    600;
options["height"] =    300;

     var chart = new google.visualization.Table(
       document.getElementById('TableID273f3d05cccd')
     );
     chart.draw(data,options);


}


// jsDisplayChart 
function displayChartTableID273f3d05cccd()
{
  google.load("visualization", "1", { packages:["table"] }); 
  google.setOnLoadCallback(drawChartTableID273f3d05cccd);
}

// jsChart 
displayChartTableID273f3d05cccd()

<!-- jsFooter -->  
//-->
</script>

<!-- divChart -->

<div id="TableID273f3d05cccd"
  style="width: 600px; height: 300px;">
</div>

当它放在上下文中时,会生成一个gvisTable。请参阅the second table in this output

因此,一个简单的R函数输出了所有必要的HTML,用于创建一个相当复杂的表。最终,我希望在LateX中看到相同程度的表格格式控制,仅适用于R Markdown。如果这些帖子经常出现在博客上,通过联合发布,在RSS阅读器中等等,那么格式化命令就会出现在身体中。这将是一件好事。

问题

  • 是否可以使用类似于gvis的方法(例如,HTML正文中的脚本)来格式化HTML表格(例如,行,单元格格式,单元格高度和宽度,字体等)?
  • 是否有任何现有的R函数支持生成此类表格?
  • 这个问题的假设是否有意义,或者是否有其他方法可以通过R Markdown实现我更精确的HTML表格格式的更广泛目标?

更新

Joe has added an answer to my previous question他提到了三个选项(正文中的样式; javascript将样式嵌入标题中;以及作用域样式块)。所以我想剩下的主要问题是,是否存在任何接口可以使用R Markdown代码块来实现这些方法。

1 个答案:

答案 0 :(得分:3)

RStudio Docs,您可以设置knitr以使用自定义样式表:

# Set Custom CSS
options(rstudio.markdownToHTML=
  function(inputFile, outputFile) {      
    require(markdown)
    markdownToHTML(inputFile, outputFile, stylesheet='custom.css')   
  }
) 

只需将stylesheet='custom.css'替换为样式表的文件路径。

然后,您可以将xtableprint与选项type="html"组合在一个块中,您将获得格式良好的表格。

如果需要的话,

xtable也会产生LaTeX。