【发布时间】:2012-06-05 07:11:51
【问题描述】:
我想研究如何以不需要使用放置在 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 代码块的这种方法。
【问题讨论】:
-
您还收到了一个回答,说您可以将 CSS 放在表格旁边的样式块中。当我发现它已经在那里回答时,我正在写那个答案。 Q1 的解决方案有什么问题?
-
对不起;这个答案是在我问这个问题后添加的。我更新了我的问题,以更多地关注 R 实现。
-
markdown 应该只是通过 HTML。因此,只需在生成表格的降价之前粘贴一个样式块(参见 package:xtable )