呈现数据表时的闪亮仪表板和意外行为(使用formatStyle)

时间:2016-08-10 23:57:17

标签: r shiny shinydashboard dt

我有一个R数据表,我正在使用Shiny将其渲染到仪表板中。

我想根据另一列的值为列着色。根据示例,我看到in the DT documentation我可以根据每个单元格中的值为列着色:

library(DT)
options(DT.options = list(pageLength = 5))
df = as.data.frame(cbind(matrix(round(rnorm(50), 3), 10), sample(0:1, 10, TRUE)))
# style V6 based on values of V6
datatable(df) %>% formatStyle(
  'V6',
  backgroundColor = styleEqual(c(0, 1), c('gray', 'yellow'))
)

根据其值对单个列进行着色按预期工作:

Single column example

同一文档中的另一个例子声称允许我们根据第V6列的值对第V1列进行着色,并隐藏显示的V6(这正是我想要做的):

# hide V6
output$table1 <- DT::renderDataTable({

  datatable(df, options = list(
      columnDefs = list(list(targets = 6, visible = FALSE))
  )) %>% formatStyle(
    'V1', 'V6',
    backgroundColor = styleEqual(c(0, 1), c('gray', 'yellow'))
  )
})

然而 - 当我在Shiny中使用renderDataTable并且看到没有颜色的列时(虽然它确实隐藏了列V6),这不起作用:

Non-working example.

我进一步探索,我可以看到styleEqual忽略了我要求它查看V6并尝试将styleEqual约束应用于V1的事实。如果我将此行更改为backgroundColor = styleInterval(0, c('gray', 'yellow')),那么它将根据V1中的值为V1着色(并且V6参数似乎完全被忽略)。

0 个答案:

没有答案