我想弄清楚如何以不需要使用放置在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")
```
Run Code Online (Sandbox Code Playgroud)
将以下内容输出到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>
Run Code Online (Sandbox Code Playgroud)
当这被置于上下文中时,就会产生一个gvisTable.请参见此输出中的第二个表.
因此,一个简单的R函数输出了所有必要的HTML,用于创建一个相当复杂的表.最终,我希望在LateX中看到相同程度的表格格式控制,仅适用于R Markdown.如果这些帖子经常出现在博客上,通过联合发布,在RSS阅读器中等等,那么格式化命令就会出现在正文中.
Joe已经在我之前的问题中添加了一个答案,其中他提到了三个选项(正文中的样式; javascript将样式嵌入标题中;以及作用域样式块).所以我想剩下的主要问题是,是否存在任何接口可以使用R Markdown代码块来实现这些方法.
在RStudio 文档中,您可以使用以下命令设置knitr使用自定义样式表:
# Set Custom CSS
options(rstudio.markdownToHTML=
function(inputFile, outputFile) {
require(markdown)
markdownToHTML(inputFile, outputFile, stylesheet='custom.css')
}
)
Run Code Online (Sandbox Code Playgroud)
只需替换stylesheet='custom.css'为样式表的文件路径即可。
然后,您可以将xtableandprint与选项组合type="html"在一个块中,您将获得一个格式良好的表格。
xtable如果需要的话,还可以生产 LaTeX。