2

我有以下代码。考虑到计算值的关系,我想在单击“开始”按钮后用粗体数字(或者可能是红色)填充 rhandsontable 对象的缺失值

datacopy[16, "wt"]= datacopy[16, "mpg"] + datacopy[16, "cyl"]

所以输出表是 rhandsontable 没有缺失值(缺失值被替换)。有谁知道我该怎么做?非常感谢你。:)

library(shiny)
library(datasets)
library(rhandsontable)

ui=fluidPage(

br(), br(), actionButton("update", "go", class="success"), br(), br(),  
rHandsontableOutput("table1")
)


server=function(input, output, session) {

mt=reactive({

datacopy= data.table(mtcars)
datacopy[16, "wt"] <- NA
datacopy

})

output$table1=renderRHandsontable({
rhandsontable(mt())
})

}

shinyApp(ui,server)
4

1 回答 1

1

这是你想要的吗?我添加了observeEvent触发按钮并重新绘制表格。我还将您的数据集包装到reactiveValues其中,以便更容易操作

library(shiny)
library(rhandsontable)

ui <- fluidPage(

  br(), br(), actionButton("update", "go", class="success"), br(), br(),  
  rHandsontableOutput("table1")
)

server=function(input, output, session) {

  mydata <- reactiveValues()
  mydata$data <- mtcars

  observeEvent(input$update,{
    mydata$data[16, "wt"] <- NA
  })

  output$table1 <- renderRHandsontable({
    rhandsontable(mydata$data) %>%
      hot_cols(renderer = "
               function (instance, td, row, col, prop, value, cellProperties) {
               Handsontable.renderers.NumericRenderer.apply(this, arguments);
               if (value== 'NA') {
               td.style.background = 'pink';} 
               }")
  })
}

shinyApp(ui,server)

在此处输入图像描述

编辑:以粗体添加 NA 并将 NA 替换为由等式计算的值

library(shiny)
library(rhandsontable)

ui <- fluidPage(
  br(), br(), actionButton("update", "go", class="success"), br(), br(),  
  rHandsontableOutput("table1")
)

server=function(input, output, session) {
  mtcars[16, "wt"] <- NA

  mydata <- reactiveValues()
  mydata$data <- mtcars
  #mydata$data[16, "wt"] <- NA

  observeEvent(input$update,{
    mydata$data[16, "wt"] <- mydata$data[16, "mpg"] + mydata$data[16, "cyl"] 
  })

  output$table1 <- renderRHandsontable({
    rhandsontable(mydata$data) %>%
      hot_cols(renderer = "
               function (instance, td, row, col, prop, value, cellProperties) {
               Handsontable.renderers.NumericRenderer.apply(this, arguments);
               if (value== 'NA') {
               td.style.fontWeight = 'bold';} 
               }")
  })
  }

shinyApp(ui,server)

点击前: 在此处输入图像描述

点击之后,带有 NA 的值变为 18.40:

在此处输入图像描述

于 2017-05-18T09:40:54.357 回答