我想了解如何以不需要使用放置在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阅读器中等等,那么格式化命令就会出现在身体中。这将是一件好事。
Joe has added an answer to my previous question他提到了三个选项(正文中的样式; javascript将样式嵌入标题中;以及作用域样式块)。所以我想剩下的主要问题是,是否存在任何接口可以使用R Markdown代码块来实现这些方法。
答案 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'
替换为样式表的文件路径。
然后,您可以将xtable
和print
与选项type="html"
组合在一个块中,您将获得格式良好的表格。
xtable
也会产生LaTeX。