6

我想研究如何以不需要使用放置在 HTML 标头中的样式的方式生成格式化的 HTML 表格。我已经广泛地询问过这个问题,但是收到了一个使用标题提到的答案和另一个涉及使用 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。请参阅此输出中的第二个表

因此,一个简单的 R 函数已经输出了创建一个相当复杂的表格所需的所有 HTML。最终,我希望在 LateX 中看到相同程度的表格格式控制,仅适用于 R Markdown。鉴于此类帖子经常出现在博客上、通过联合发布、RSS 阅读器等等,格式化命令在正文中会很好。

问题

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

更新

Joe 在我之前的问题中添加了一个答案,他提到了三个选项(正文中的样式;在标题中嵌入样式的 javascript;和范围样式块)。所以我想剩下的主要问题是是否存在任何接口来促进使用带有 R Markdown 代码块的这种方法。

4

1 回答 1

3

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

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

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

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

xtable如果需要,也会产生 LaTeX。

于 2012-12-16T23:06:15.400 回答