以有条件的方式格式化rHandsontable中的空单元格

以有条件的方式格式化rHandsontable中的空单元格,r,shiny,rhandsontable,R,Shiny,Rhandsontable,问题1:当rhandsontable单元格的内容变为空时,我想在Shiny中更改其格式。 我想我是用hot_cols(renderer=“…”)找到它的,但结果让我非常惊讶:内容为0的单元格也会高亮显示。有人能告诉我如何通过R测试JS中的空性吗? 我尝试了value==''和isEmpty(),但没有成功 问题2:另外,如果我们在第3列中输入“1e6”,显示的值实际上是1000000,但其背景切换为红色:有什么方法可以阻止它?i、 e.允许科学符号输入 下面是一个最小的可复制示例: librar

问题1:当rhandsontable单元格的内容变为空时,我想在Shiny中更改其格式。 我想我是用
hot_cols(renderer=“…”)
找到它的,但结果让我非常惊讶:内容为0的单元格也会高亮显示。有人能告诉我如何通过R测试JS中的空性吗? 我尝试了
value==''
和isEmpty(),但没有成功

问题2:另外,如果我们在第3列中输入“1e6”,显示的值实际上是1000000,但其背景切换为红色:有什么方法可以阻止它?i、 e.允许科学符号输入

下面是一个最小的可复制示例:

library(shiny)
library(rhandsontable)

DF <- data.frame(col1 = c(1, 0, 3), col2 = c(letters[23:22], NA), col3 = round(rnorm(3, 1e6, 1e3),0))

server <- shinyServer(function(input, output, session) {
  
  output$rt <- renderRHandsontable({
    rhandsontable(DF) %>%      
      
      # conditional overall formatting > grey empty cells
      hot_cols(renderer = "
           function (instance, td, row, col, prop, value, cellProperties) {
             Handsontable.renderers.NumericRenderer.apply(this, arguments);
             if(!value) {
                td.style.background = '#EEE';
              }
           }")
  })
})

ui <- shinyUI(fluidPage(
  rHandsontableOutput("rt")
))

shinyApp(ui, server)
库(闪亮)
图书馆(rhandsontable)

DF关于您的第一个问题:您可以添加值不为0的条件:

library(shiny)
library(rhandsontable)

DF <- data.frame(col1 = c(1, 0, 3), col2 = c(letters[23:22], NA), col3 = round(rnorm(3, 1e6, 1e3),0))

server <- shinyServer(function(input, output, session) {
  
  output$rt <- renderRHandsontable({
    rhandsontable(DF) %>%      
      
      # conditional overall formatting > grey empty cells
      hot_cols(renderer = "
           function (instance, td, row, col, prop, value, cellProperties) {
             Handsontable.renderers.NumericRenderer.apply(this, arguments);
             if(!value && value != 0) {
                td.style.background = '#EEE';
              }
           }")
  })
})

ui <- shinyUI(fluidPage(
  rHandsontableOutput("rt")
))

shinyApp(ui, server)
库(闪亮)
图书馆(rhandsontable)

DF我非常确定有一种特殊的方法可以同时测试这两个。。。我没有想到这个显而易见的解决方案:)为什么要使用“&&&”而不仅仅是“&”?我不太懂javascript,但我认为JS中的