#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. Мне нужен только рандсонтаблица