繁体   English   中英

在R中使用DT包进行条件格式化

[英]Conditional Formatting Using DT Package in R

我正在尝试使用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'))
                      )
    })

我会在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$添加到变量名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM