使用 R 的Reactable包和 RMarkdown 我想创建一个表格,其中一列的状态 <= 2 为绿色方块,否则为红色方块。
如果我尝试根据状态列的值来格式化它,它会创建一个非彩色方块。见图片。
在下面的 .Rmd 文件中,只有当列没有值时,我才能让 css 在列中创建一个彩色方块。
总而言之,在状态列下,我想要没有可见数字的彩色方块(状态 <= 2 的绿色方块和红色方块),与列的状态名称左对齐。
Flag 列只是为了表明 css 正在工作。
RMarkdown 文件
title: Conditional Colored Square in Reactable Table
author: IX
date: 'September 5, 2020'
slug: test
categories: []
tags: []
output:
html_document
---
```{css, echo=FALSE}
.row {
display : flex;
align-items : center;
margin-bottom: 15px;
}
.box {
height: 20px;
width: 20px;
border: 1px solid black;
margin-right : 5px;
}
.red {
background-color: red;
}
.green {
background-color: green;
}
.blue {
background-color: blue;
}
```
```{r, echo=FALSE, message=FALSE, warning=FALSE}
library("reactable")
orders <- data.frame(
Order = 2300:2304,
Created = seq(as.Date("2019-04-01"), by = "day", length.out = 5),
Customer = sample(rownames(MASS::painters), 5),
Status = c(1, 2, 3, 4, 5),
Flag = c("", "", "", "", "")
)
reactable(orders, columns = list(
Status = colDef(cell = function(value) {
if (value <= 2) {
class <- paste0("tag box green", tolower(value))
htmltools::div(class = class, value)
}
}),
Flag = colDef(cell = function(value) {
class <- paste0("tag box green", tolower(value))
htmltools::div(class = class, value)
})
))