Отредактируйте таблицу rand в блестящем

#r #shiny

Вопрос:

Я пытаюсь обновить свою таблицу ransontable на основе значений из a и b. Но он не обновляется. В основном столбец c должен быть столбцом a, разделенным столбцом b

 library(shiny)
library(rhandsontable)

did_recalc <- FALSE

ui <- fluidPage(
  # tableOutput(table1),
  rHandsontableOutput('table'),
  textOutput('result')
)

server <- function(input,output,session)({
  # values <- reactiveValues(data=as.data.frame(runif(2)))
  INR = c(0)
  `Price` = c(0)
  Total = as.numeric(INR / `Price`)
  
  values <- data.frame(a = INR, b = `Price`, c = Total)
  
  observe({
    if(!is.null(input$table))
      values <- hot_to_r(input$table)
  })
  
  
  
  output$table <- renderRHandsontable({
    rhandsontable(values)
  })
  
}) 

shinyApp(ui = ui, server = server)

 

Ответ №1:

Вам нужно убедиться, что объект, содержащий данные ( values ), является реактивным. Это заставит все, что использует его, правильно обновляться.

 library(shiny)
library(rhandsontable)
library(dplyr)

ui <- fluidPage(
    rHandsontableOutput('table')
)

server <- function(input,output,session)({
    
    values <- reactiveVal(value = data.frame(INR = runif(2), 
                                             Price = runif(2)))
    
    output$table <- renderRHandsontable({
        values() %>% 
            mutate(Total = INR/Price) %>% 
            rhandsontable() %>% 
            hot_col("Total", readOnly = TRUE)
    })
    
    observe({
        if(!is.null(input$table))
            values(hot_to_r(input$table))
    })
    
}) 

shinyApp(ui = ui, server = server)
 

Комментарии:

1. Спасибо. Но можем ли мы сделать это только в одной таблице. Мне не нужна таблица 1. Мне нужен только рандсонтаблица