Столбец Reactive / Calculate в Rhandsontable, где исходные данные - это фрейм данных из реактивного значения - PullRequest
0 голосов
/ 05 октября 2018

У меня есть блестящее приложение, которое будет отображать многообещающую таблицу в зависимости от категории продукта, которую пользователь хочет просмотреть.Мне нужно пересчитать один из столбцов, если пользователь вводит разные значения в другой столбец, и я нашел этот пример полезным: Реактивный / Рассчитать столбцы в rhandsontable в глянцевый rstudio за исключением того, что я получаю данные моеготаблицы из реактивного объекта, поэтому, когда я перенаправляю «datacopy» в функцию для получения данных, этот код не работает.Может ли кто-нибудь помочь мне достичь этого?Вот пример кода:

library(shiny)
library(datasets)
library(rhandsontable)
library(data.table)

ui=fluidPage(
  rHandsontableOutput("table1")
)

server=function(input, output, session) {

 mt=reactive({
 datacopy <- NULL
 #For initial data upload
 if(is.null(input$table1)){
     datacopy= mtcars[, names(mtcars) %in% c("mpg" , "cyl" , "disp")]
     datacopy=data.table(datacopy) 
 }else{
  datacopy = hot_to_r(input$table1)
  #If there is change in data
  if(!is.null(input$table1$changes$changes)){
    row.no <- unlist(input$table1$changes$changes)[1]
    col.no <- unlist(input$table1$changes$changes)[2]
    new.val <- unlist(input$table1$changes$changes)[4]
    #If the changed value is mpg or cyl
    if(col.no == 0 || col.no == 1){
      datacopy[(row.no+1), 3] = datacopy[(row.no+1), 1]*datacopy[(row.no+1), 2]
    }else{
      datacopy[(row.no+1), 2] = datacopy[(row.no+1), 1]*datacopy[(row.no+1), 3]
    }
  }
}
datacopy
  })  

output$table1=renderRHandsontable({
    rhandsontable(mt())
})
}
shinyApp(ui, server)
...