我想研究如何以不需要使用放置在 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 代码块的这种方法。