如何使用R Markdown或HTMLSwave生成HTML表和附带的CSS?
我以前问过一个关于他的问题 我习惯于在创建表时,表的格式在很大程度上取决于此时出现的文本和标记。这对于Swave很有效,因为您的R代码块可以在此时输出LaTeX表标记。我还知道有一些工具,如如何使用R Markdown或HTMLSwave生成HTML表和附带的CSS?,r,R,我以前问过一个关于他的问题 我习惯于在创建表时,表的格式在很大程度上取决于此时出现的文本和标记。这对于Swave很有效,因为您的R代码块可以在此时输出LaTeX表标记。我还知道有一些工具,如xtable,可以为表生成HTML标记 然而,对HTML表的控制似乎依赖于样式表,样式表显示在文档的标题中,而不是R代码块所在的位置。当然,我可以将内容放在样式表中,但在科学应用中,通常会有一些非常具体的表格格式,在某些方面因表格而异 因此,我的问题是: 一般来说,如果输出的格式化需要在文档中的一个单独位置
xtable
,可以为表生成HTML标记
然而,对HTML表的控制似乎依赖于样式表,样式表显示在文档的标题中,而不是R代码块所在的位置。当然,我可以将内容放在样式表中,但在科学应用中,通常会有一些非常具体的表格格式,在某些方面因表格而异
因此,我的问题是:
- 一般来说,如果输出的格式化需要在文档中的一个单独位置(即页眉中表格的CSS)创建输出,则如何使用诸如R Markdown之类的可读编程设置HTML表格的格式,或者甚至从原始HTML设置HTML表格的格式(即表格本身在正文中的位置)
- 好的,希望我现在就拿到了。您应该设置一些附加的knitr选项,如果您愿意,您可以动态地cat()css
<!DOCTYPE html>
<head>
<style type="text/css">
.greenback {
background-color: teal;
color: white;
}
.greenback td {
border: dotted gray;
}
.bluescreen {
background-color: blue;
color: white;
}
.bluescreen td {
border: thick solid;
padding:2px;
margin:2px;
}
</style>
</head>
<body>
<table class="greenback">
<tr><td>Hello</td><td>Mars</td><tr>
<tr><td>World</td><td>Moon</td><tr>
</table>
Could use some xtable code here instead.
<!--begin.rcode
cat('
<table class="bluescreen">
<tr><td>Hello</td><td>Mars</td><tr>
<tr><td>World</td><td>Moon</td><tr>
</table>
')
end.rcode-->
</body>
</html>
美元{
背景色:青色;
颜色:白色;
}
美元td{
边框:点灰色;
}
.蓝屏{
背景颜色:蓝色;
颜色:白色;
}
.bluescreen td{
边框:厚实;
填充:2px;
保证金:2倍;
}
哈洛马尔
世界之月
可以在这里使用一些xtable代码。
另一种方法是使用R markdown后端(对于这个类似于营销的答案,我感到很抱歉,但我确实认为我的Pandoc.brew
函数非常方便)
它类似于knitr
(解析/评估标记格式文件中的R命令),但对R代码块使用brew
语法(例如,对于一般的R代码类循环等使用
,对于在块中返回结果使用
)。但与brew
不同的是Pandoc。brew
不仅生成cat
代码块,而且运行mypander
通用方法,将(种类繁多的)R对象转换为(IMHO)漂亮的Pandoc标记格式
因此,在标记格式的文件上运行Pandoc.brew
将生成一个干净的标记文件,所有R代码块都将运行-并且您不必处理xtable
和其他调整(甚至不必处理打印,因为生成图像的所有R代码块都将渲染到png
文件并链接到标记文本文件中)
关于为什么我开始在这里回答:使用pander
可以将特殊选项传递给pandoc
,例如,在生成的HTML标题中添加自定义CSS样式表(或JS等),请参阅。基于此,您可以轻松添加CSS文件,甚至只添加一组样式参数。这可以通过Pandoc.convert
的选项在pander
中完成。顺便说一句,您甚至不必使用我的forkedbrew
函数,您可以使用例如knitr
生成降价文件,并使用上述函数调用Pandoc
pander
在生成的HTML文件中添加了一些CSS/JS,这将生成(IMHO)非常漂亮的输出,但是您可以轻松地自定义它并在其中添加您自己的文件
例如:默认情况下,您将从这个非常简短的中获得基础,即Pandoc.brew
ed。顺便说一句,我的markdown解析器也会自动生成/设置样式。如果您能试一试,我将不胜感激:)
注意:要尝试上述调用,您需要预先安装Pandoc
,还需要两者的最新版本,两者都是pander
。请参阅。无法完全解决问题的一个选项是使用gvisTable
:
以下是一个基本的gvisTable:
```{r message=FALSE}
# install.packages("googleVis")
library(googleVis)
library(MASS)
data(Animals)
```
```{r results='asis'}
tab1 <- gvisTable(Animals,
options = list(width = 600, height = 650,
page = "enable",
pageSize = nrow(Animals)))
print(tab1, "chart")
```
`{r message=FALSE}
#安装.packages(“googleVis”)
图书馆(谷歌)
图书馆(弥撒)
数据(动物)
```
```{r results='asis'}
tab1我可以想出三种方法而不会弄乱你的工具链,它们都有点老套
只需将
输出到正文中即可。这在技术上是无效的,但在任何主流浏览器中都可以正常工作
发出JavaScript,在运行时创建
块并将其附加到头部(单向)。这在HTML源代码和R代码中看起来有点粗俗,但它可以工作并且可以验证
使用一个。这正是您想要的,除了scope属性对HTML5来说是新的,并且还没有在任何主流浏览器中实现。但是,如果您的样式基于唯一生成的ID(即,您的规则的编写方式是,即使它们应用于整个文档,也不会弄乱任何东西),我想浏览器将忽略“scoped”属性,所有内容都将正常工作——那么这将成为选项1的一个有效版本,恰好验证
(我个人会同意第三条。)
如果你还没有,那么值得在RStudio支持论坛上发布一条关于这方面的帖子;尽管严格来说这不是RStudio的问题,但我们显然在R Markdown中发布报告的端到端场景方面做了大量工作,我们很想了解更多关于您的具体示例的信息。显然,表格将是人们处理这些报告的一个重要部分,我们知道这是目前的一个弱点,我们希望在未来的版本中解决这个问题。尼尔·桑德斯有一个关于表格的教程。它显示了如何修改内置样式文件,并通过为表提供一个类和特定于类的css来获取该替代文件的源。。如果此解决方案不能解决问题,请添加一个计数器示例。@Die