首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用RMarkdown +针织工具创建具有条件格式的表格

使用RMarkdown +针织工具创建具有条件格式的表格
EN

Stack Overflow用户
提问于 2013-03-14 15:57:14
回答 2查看 8.2K关注 0票数 19

我有一个数据框,我想把它输出到一个超文本标记语言文件中,通过output和RMarkdown作为一个带有条件格式的表格。示例:

代码语言:javascript
复制
n <- data.frame(x = c(1,1,1,1,1), y = c(0,1,0,1,0))
> n
  x y
1 1 0
2 1 1
3 1 0
4 1 1
5 1 0

我希望高亮显示具有不同x和y值的行。如果HTML文件中的输出是一个HTML表,那就更好了,但是如果不是这样,图像也是可以的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-14 16:45:56

我一直想在我的pander package中使用这个特性来扩展pandoc.table,但是没有时间这么做。但这个问题真的很鼓舞人心,可能会在接下来的几天内完成。在此之前,下面的内容如何:

  1. 加载程序包:

library(pander)

  • Load你的数据:

N <- Pandoc(x= c(1,1,1,1,1),y= c(0,1,0,1,0))

  • Update您的行在data.frame中标记为

对于(i in c(1,3,5)) ni,<- pandoc.strong.return(n1,)

  • 显示表格的标记版本:

method

  • Covert (N) pandoc.table(n) # S3使用brew语法将标记缩减为例如:

Pandoc.brew(文本= '<%=n%>',输出=临时文件(),转换= 'html')

更新:我已经更新了pander,可以采用一些新的参数来轻松地突出显示行/列/单元格。虽然我仍在开发一些更多的助手函数,以使此过程更容易,但这里有一个快速演示,以便您可以看到它如何帮助您的工作流程:

代码语言:javascript
复制
> pandoc.table(n, emphasize.rows = c(1, 3, 5))

-------
 x   y 
--- ---
*1* *0*

 1   1 

*0* *1*

 1   1 

*1* *0*
-------

> pandoc.table(n, emphasize.strong.cells = which(n == 1, arr.ind = TRUE))

-----------
  x     y  
----- -----
**1**   0  

**1** **1**

**1**   0  

**1** **1**

**1**   0  
-----------

更新: pander获得了一些帮助函数,可以更轻松地突出显示表格中的单元格:

代码语言:javascript
复制
> t <- mtcars[1:3, 1:5]
> emphasize.cols(1)
> emphasize.rows(1)
> pandoc.table(t)

----------------------------------------------------
      &nbsp;         mpg    cyl   disp   hp    drat 
------------------- ------ ----- ------ ----- ------
   **Mazda RX4**     *21*   *6*  *160*  *110* *3.9* 

 **Mazda RX4 Wag**   *21*    6    160    110   3.9  

  **Datsun 710**    *22.8*   4    108    93    3.85 
----------------------------------------------------

或者直接使用pander方法:

代码语言:javascript
复制
> emphasize.strong.cells(which(t > 20, arr.ind = TRUE))
> pander(t)

---------------------------------------------------------
      &nbsp;          mpg     cyl   disp     hp     drat 
------------------- -------- ----- ------- ------- ------
   **Mazda RX4**     **21**    6   **160** **110**  3.9  

 **Mazda RX4 Wag**   **21**    6   **160** **110**  3.9  

  **Datsun 710**    **22.8**   4   **108** **93**   3.85 
---------------------------------------------------------

请注意,这些新功能尚未在CRAN上发布,但您可以在上托管的最新版本中找到。

票数 24
EN

Stack Overflow用户

发布于 2013-03-14 17:08:26

这里是一个基于带有自定义cssxtable的解决方案。我认为这个解决方案是灵活的,因为一旦你开始工作,如果你知道一些css技巧,你就可以无限地定制你的html表格。

我们开始吧。该解决方案包含3个文件:

  1. 是一个css文件,我可以在其中替换表格行的颜色。

表格{最大宽度: 95%;边框: 1px实体#ccc;}{背景颜色:#000000;颜色:#ffffff;}表格tr:第n个子对象(奇数) td{背景颜色:#FF0000;}表格tr:第n个子对象(偶数) td{背景颜色:#00FFFFF;}

  • 一个R脚本文件,用于设置RStudio标记,内容如下:

选项(rstudio.markdownToHTML= function(inputFile,outputFile) { require( markdown ) markdownToHTML(inputFile,outputFile,stylesheet='customstyle.css') })

  • 使用以下内容创建新的标记:

{r} source('initmd.R') {r,results='asis'} library(xtable) n <- data.frame(x = c(1,1,1,1,1), y = c(0,1,0,1,0)) print(xtable(n),type='html')

最后,使用knit HTML按钮将markdwon转换为html,您应该会得到如下所示:

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15403903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档