首页 > 解决方案 > 当数据表没有列时,DT::renderDataTable 中的 formatCurrency

问题描述

我在闪亮的应用程序中使用 renderDataTable 来显示 data.table vals$content4table 的内容,它是一个 reactiveValues。

可能会发生 vals$content4table 等于没有列的数据表。在这种情况下,我在使用 formatCurrency 时出错,因为它搜索不存在的列。有没有办法检查数据表是否有带有 ifelse 的列以避免错误?

这是我的服务器的一段代码。

#initialising vals$content4table when launching the app
 vals <- reactiveValues(content4table = if(someBoolean) {data.table(NULL)} else {data.table("Column1" = "whatever","Currency" = 1000}
  )
 
output$TableInUI <- DT::renderDataTable(datatable(vals$content4table) %>% ifelse(nrow(vals$content4table)>0,formatCurrency(2, currency = "", interval = 3, mark = ",",  digits = 0),fnothing()))

#where fnothing is defined as
fnothing<-function(df) return(df)

上面的代码不起作用并给出了这个错误:警告:ifelse中的错误:未使用的参数(fnothing())

标签: htmlrshinydtformat-currency

解决方案


你可以使用req

output$TableInUI <- DT::renderDataTable({
   req(isTRUE(ncol(vals$content4table)>0))
   vals$content4table
})

推荐阅读