【问题标题】:How to get R to output body scripts to format HTML tables using a similar approach as gvisTable?如何使用与 gvisTable 类似的方法让 R 输出正文脚本以格式化 HTML 表格?
【发布时间】: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 )

标签: r knitr


【解决方案1】:

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

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

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

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

xtable 如果需要,也可以生成 LaTeX。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2018-05-02
    • 2014-12-06
    相关资源
    最近更新 更多