DT和Plotly之间的冲突在表中显示NA

时间:2018-04-23 18:52:00

标签: r shiny dt r-plotly

有一个解决方案可以使用NA创建的表格中显示Infoptions(htmlwidgets.TOJSON_ARGS = list(na = 'string'))值,如here所述。

问题是htmlwidgets.TOJSON_ARGS也影响了情节。以下是问题的简单示例。

library(shiny)
library(DT)
library(plotly)

options(htmlwidgets.TOJSON_ARGS = list(na = 'string'))
dat <- data.frame(x = c(1, NA, NA, 4, 5), y = 1:5)
shinyApp(
  ui = fluidPage(
    plotlyOutput("plot"),
    DTOutput('tbl')
  ),
  server = function(input, output) {
    output$plot <- renderPlotly({
      plot_ly(data = dat, x =~x, y =~y)
    })
    output$tbl = renderDataTable(dat)
  }
)

该表正确显示了NA个值但该图不起作用并显示Error: formal argument "na" matched by multiple actual arguments

是否可以将htmlwidgets.TOJSON_ARGS设置为仅影响表格而不影响情节?或者使用什么样的正确参数来避免错误?

上面的代码是非常基本的示例,该解决方案应该与用户与数据交互时动态创建的多个表和图一起使用。因此,删除options(htmlwidgets.TOJSON_ARGS = list(na = 'string'))并将数据转换为字符串不是一个选项,因为它会破坏表的排序功能。不要在表的columnDefs参数中使用自定义JS代码来显示NA,因为它对于大型数据集来说效率低下。

非常感谢任何推荐或评论。

1 个答案:

答案 0 :(得分:0)

DT的开发版现在有一个新选项DT.TOJSON_ARGS,可以解决您的问题。请参阅rstudio/DT#536