【问题标题】:Conditional Formatting Using DT Package in R在 R 中使用 DT 包进行条件格式化
【发布时间】:2019-12-17 09:08:43
【问题描述】:

我正在尝试使用 R 中的 DT 包复制 Excel 的条件格式。

在我的示例中,足球俱乐部在下拉列表中被选中,他们的比赛出现在表格中。我想根据俱乐部的结果突出显示每一行。挑战在于俱乐部在主场和客场比赛中的比赛不同,因此代码需要满足这一点。行格式应如下所示:

  • 绿色表示获胜 - 如果所选俱乐部的得分比他们的对手多
  • 灰色表示平局 - 如果所选俱乐部的得分与他们的对手相同
  • 红色表示失败 - 如果所选俱乐部的得分低于他们的对手

这是我到目前为止的代码(在底部格式化)。显然它是错误的,所以不要太在意它。它所做的只是根据Home.Goals 字段中特定数量的目标突出显示。

output$match_cr <- DT::renderDataTable({

        match_cr <- match

        # Find home and away matches involving club selected from dropdown.  
        match_cr <- subset(
            match_cr,
            match_cr$Home.Club == input$club | match_cr$Away.Club == input$club
        )

        if (input$season != "All") {
            match_cr <- subset(
                match_cr,
                Season == input$season
            )
        }

        match_cr

        DT::datatable(match_cr,filter = 'top', options =
                          list(lengthMenu = list(c(-1, 10, 50, 100),
                                            list('All', 10, 50, 100)),
                               pageLength = -1), selection = 'none'

                      ) %>%
            formatStyle(
                          'Home.Goals', target = 'row',
                          backgroundColor = styleEqual(c(2, 1, 0),c('green', 'grey', 'red'))
                      )
    })

【问题讨论】:

    标签: r shiny formatting conditional-formatting dt


    【解决方案1】:

    我会在match_cr 中再添加一列,表明所选俱乐部是否像这样获胜:

    match_cr$win.selected = ifelse(((match_cr$Home.Club == input$club) & (match_cr$Home.Goals > match_cr$Away.Goals)) ||
                                   ((match_cr$Away.Club == input$club) & (match_cr$Away.Goals > match_cr$Home.Goals)), 
                                   2, 
                                   ifelse(match_cr$Home.Goals == match_cr$Away.Goals, 1, 0))
    

    您可以在 subset() 之后添加它。然后你可以格式化数据表

    formatStyle('win.selected', target = 'row',
                backgroundColor = styleEqual(c(2, 1, 0),c('green', 'grey', 'red'))
    ) 
    

    编辑:将match_cr$ 添加到变量名称中。

    【讨论】:

    • 非常感谢。在我删除第一个 sn-p 中的额外垂直条后,这工作正常。
    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2018-08-25
    • 2017-03-19
    • 1970-01-01
    • 2018-02-06
    • 2020-07-13
    • 2013-05-19
    相关资源
    最近更新 更多