【问题标题】:Format Specific Cell in DataTable in R格式化R中DataTable中的特定单元格
【发布时间】:2017-07-13 20:58:17
【问题描述】:

如何使用 DT 格式化特定单元格?在此示例中,我将如何格式化第一列中 >0 的每个单元格?

df = data.frame(
  V1 = c(5, -31, '-2'),
  V2 = c(-5, -7, '2'),
  V3 = c(4, -10, '22'))


DT = datatable(df) %>%
  formatStyle(...)

我认为像 backgroundColor = styleInterval(0, c('red', 'blue))(在 formatStyle() 中)这样的东西可能会起作用,但我没有运气。

【问题讨论】:

    标签: r dt


    【解决方案1】:

    下面的链接对我来说非常有用 - 有多种格式排列...

    https://rstudio.github.io/DT/010-style.html

    特定于一列,根据 > 0 变化:

    library(DT)
    
    df = data.frame(
      V1 = c(5, -31, '-2'),
      V2 = c(-5, -7, '2'),
      V3 = c(4, -10, '22'))
    
    DT = DT::datatable(df) %>%
         formatStyle('V1', backgroundColor = styleInterval(c(0),c('red','blue')))
    

    可能是 c() 将切割指定为向量...


    以下是格式化单元格的示例(但有点小技巧 - 不确定自己是否有其他方式)

      df = data.frame(
        V1 = c(5, -31, '-2'),
        V2 = c(-5, -7, '2'),
        V3 = c(4, -10, '22'))
    

    现在创建一个包含您的“标志”值的列

      df$FLAG <- c(0,0.5,1)
    

    现在创建您选择的样式/颜色并格式化数据框(然后我使 FLAG (4) 列不可见,因此看起来好像单元格已格式化)

    styles <- c("rgb(245,242,242)",
            "rgb(254, 204, 116)","rgb(255,83,83)")
    
    
    datatable(df, caption = 'Test Format',
              options = list(dom='t',columnDefs = 
                                      list(list(visible=FALSE,
                                                    targets=4)))) %>%
              formatStyle("V1","FLAG",
                     backgroundColor = styleEqual(c(0,0.5,1),styles))
    

    注意 dom='t' 只是省略了数据表过滤和分页;而 columnDefs 用于省略 FLAG 列

    【讨论】:

    • 这行得通……哇!谢谢你。我已经有一段时间无法解决这个问题了。你知道是否有办法将它也限制在某些行中? formatStyle() 指定列V1,有什么方法可以限制为,例如,仅第 3 行?我正在查看您发布的链接,似乎只有一种方法可以突出显示整行,而不是特定的单元格。
    • 如果没有轻微的修改,我真的无法正确设置单元格格式,formatStyle 似乎没有单元格引用,例如 [row,column] ,所以我创建了一个合成列和基于此的格式,我将包含一个示例...
    • 谢谢!!有点麻烦,但我找不到任何更好的单元格特定格式解决方案。
    猜你喜欢
    • 2015-08-24
    • 2023-02-08
    • 2021-12-14
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多