0

我有这个data.frame,我想使用formattable包为每个名称分配不同的颜色,其中“Bob”=“Blue”,“Ashley”=“Red”等。有什么想法吗?

我刚开始使用 r 编程,但我在格式化包方面特别苦苦挣扎,因为示例很少,并且文档集中在数值上。

df <- data.frame(
  id = 1:10,
  name = c("Bob", "Ashley", "James", "David", "Jenny", 
           "Hans", "Leo", "John", "Emily", "Lee"), 
  age = c(48, 47, 40, 28, 29, 29, 27, 27, 31, 30),
  test1_score = c(18.9, 19.5, 19.6, 12.9, 11.1, 7.3, 4.3, 3.9, 2.5, 1.6),
  test2_score = c(9.1, 9.1, 9.2, 11.1, 13.9, 14.5, 19.2, 19.3, 19.1, 18.8),
  stringsAsFactors = FALSE)

到目前为止,我得到了一个价值,但其余的却在苦苦挣扎:

  name = formatter("span", style = x ~ ifelse(x == "Bob", 
        style("background-color" = "blue", display = "block", "border-radius" = "4px", font.weight = "bold"), NA))))

我如何从该列添加其他参数,就像您可以在 DT 包中使用 formatStyle 一样。

%>%
  formatStyle(
    'name',
    backgroundColor = styleEqual(c('Bob', 'Ashley'), c('blue', 'red'))
4

1 回答 1

2

target = 'row'您可以使用in 中的参数设置整行而不是单个单元格的样式formatStyle()

这是 .Rmd 代码块:

```{r data}
library(formattable)
library(DT)
df <- data.frame(
  id = 1:10,
  name = c("Bob", "Ashley", "James", "David", "Jenny", 
           "Hans", "Leo", "John", "Emily", "Lee"), 
  age = c(48, 47, 40, 28, 29, 29, 27, 27, 31, 30),
  test1_score = c(18.9, 19.5, 19.6, 12.9, 11.1, 7.3, 4.3, 3.9, 2.5, 1.6),
  test2_score = c(9.1, 9.1, 9.2, 11.1, 13.9, 14.5, 19.2, 19.3, 19.1, 18.8),
  stringsAsFactors = FALSE)
datatable(df) %>% formatStyle(
  'name',
  target = 'row',
  backgroundColor = styleEqual(c("Bob", "Ashley"), c('blue', 'red'))
)
```

该表如下所示: 在此处输入图像描述

于 2017-07-25T12:53:16.417 回答