使用DT格式R Shiny时,“数据”必须为二维(例如数据框或矩阵)

时间:2018-07-30 14:11:36

标签: r shiny dt

我正在尝试使用DT格式化输出。以下是获取数据框的代码

> MyData
Tab       Classification_Level    Month_considered   Primary_family Secondary_family Metric_name Metric_Value
1 Level1         Brand family           Apr-17          NP              <NA>        <NA>          34,585
2 Level1      Brand Subfamily           Apr-17          PM             <NA>        <NA>           7,401
3 Level1      Brand Subfamily           Apr-17          NP             <NA>        <NA>           34,596
4 Level1      Brand Subfamily           Apr-17         MB NP           <NA>        <NA>           15,985
5 Level1      Brand Subfamily           Apr-17         MB M            <NA>        <NA>           9,712
6 Level1                Brand           Apr-17         KL              <NA>        <NA>           6,242
> sapply(MyData,class)
         Tab Classification_Level     Month_considered       Primary_family     Secondary_family 
    "factor"             "factor"             "factor"             "factor"             "factor" 
 Metric_name         Metric_Value 
    "factor"

 a <- reactive({
    MyData %>%
      filter(
        Classification_Level == input$selected_class &
          Primary_family == input$selected_product &
          Metric_name == input$selected_metric
      ) %>%
      mutate(`ATC_Count` = Metric_Value) %>%
      mutate(`pct` = as.numeric(as.character(Metric_Value)) * 100) %>%
      select(Month_considered, `pct`) %>%
      group_by(Month_considered)
  })

当我检查此data.frame的类时

List of 8
 $ x            :List of 5
  ..$ filter   : chr "none"
  ..$ data     :'data.frame':   11 obs. of  3 variables:
  .. ..$                 : chr [1:11] "1" "2" "3" "4" ...
  .. ..$ Month_considered: Date[1:11], format: "2017-04-01" "2017-05-01" "2017-06-01" "2017-07-01" ...
  .. ..$ pct             : num [1:11] 33.4 34.8 36.6 36.6 34.6 ...

现在,当尝试格式化和突出显示列时,出现错误“数据”必须是二维的(例如数据框或矩阵)

```

abc<- reactive ({datatable(a()) %>% formatStyle(
    'pct',
    backgroundColor = styleEqual(c(0, 1), c('gray', 'yellow'))
  )})

 output$op1 <- renderDataTable({
    DT::datatable(abc())

  })

1 个答案:

答案 0 :(得分:0)

如果data.table定义没有问题,则问题似乎是呈现部分。 “ renderDataTable”既有光泽也有DT包。您可以尝试DT :: renderDataTable吗?