【发布时间】:2018-05-10 13:29:21
【问题描述】:
我有以下数据框:
col1 <- rep(c("A","B","C","D"),10)
col2 <- rep(c(1,0),10)
col3 <- rep(c(0,1),10)
col4 <- rep(c(1,0),10)
col5 <- rep(c(0,1),10)
test_df <- data.frame(col1, col2, col3, col4, col5, stringsAsFactors = F)
我想根据 col1 中的值为多列中的特定行单元格着色,并在表中的两列之间添加一条垂直线(表示限制)(基于 col1 中的相同值)
例如,如果 col1 == "A",那么我想将 col2 和 col5 中的单元格着色为灰色,与 col1 == A 在同一行。
在虚拟代码中:
if col1 == A: color columns(col2, col5), vert.line between col3 and col4
if col1 == B: color columns(col2, col3, col5), vert.line between col4 and col5
if col1 == C: color columns(col2, col4, col5), vert.line between col3 and col4
if col1 == D: color columns(col2, col5), vert.line between col2 and col3
我想指定这些规则,以便在必要时可以轻松更改它们。
我想得到这样的结果(星号表示单元格着色):
col1 col2 col3 col4 col5
A *1* 0 | 1 *0*
B *0* *1* 0 | *1*
C *1* *0* | 1 *0*
D *0* | 1 0 *1*
A *1* 0 | 1 *0*
B *0* *1* 0 | *1*
C *1* *0* | 1 *0*
D *0* | 1 0 *1*
我在一个闪亮的应用程序和降价文档的表格中展示了这个。有什么办法可以用 f. ex xtable 还是 dplyr?
【问题讨论】:
-
为了获得单元格着色,您必须生成一个 HTML 表格。 R 没有像您从电子表格程序中知道的那样为单元格着色。
-
@RomanLuštrik 我明白了!你会建议我怎么做?是否可以直接以闪亮的形式呈现一个html表格?
-
在shiny中,函数renderDataTable使用javascript库来创建表。它有很多options。这是一个看看的好地方。
-
这是我们的待办事项列表,@clemens 添加到
tableHTML包中。我们已经实现了列条件格式化,我们希望很快也能进行行条件格式化。也许看看我们的conditional vignette 看看是否有什么可以使用的。该软件包与shiny兼容。 -
@thepule 不幸的是,我不想要一个交互式表格,只需要一个普通的表格。但是,它确实给了我想要的 formatStyle(backgroundcolor = styleEqual(col2, "grey")) 命令。我不知道如何在列之间添加线条
标签: r html-table