РЕДАКТИРОВАТЬ: я включил Наблюдение за событием () в server.R, как описано в этом видео: https://www.youtube.com/watch?v=BzE1JmC0F6Q. Работает частично. Когда я обновляю A и B, график обновляется, но столбцы C, D и E дают неправильные значения, а количество строк продолжает расти. Любая помощь приветствуется.
У меня есть 2 столбца A и B. У пользователя есть возможность перетаскивать значения в A и B, и, следовательно, я использую rhandsontable (Источник: https://jrowen.github.io/rhandsontable/)
У меня есть код ниже для ui.R и server.R. Приложение в основном имеет редактируемую таблицу и вывод ggplotly. Исходя из того, что я ввожу в столбцы A и B, столбцы C, D и E должны обновляться автоматически на основе некоторой формулы, которую я включил в server.R. Когда я запускаю этот код, графики и столбцы не обновляются. Что мне делать?
ui.r
library(shiny)
shinyUI(fluidPage(
fluidRow(
column(4, rHandsontableOutput("table")),
column(4, plotlyOutput("plot"))
)
))
server.R
shinyServer(function(input, output, session) {
df<- data.frame(A=c(9,15,25,35,40,45,50,55,60,65,75,85,95,105,120,125),
B=c(0.5,1.5,3,8,16,23,30,36,43,58,64,78,92,98,99,100))
for(i in 2:(nrow(df)))
{
df[i,3]<-df[i-1,1]+(df[i,1]-df[i-1,1])/2
df[i,4]<-(df[i,2]-df[i-1,2])
df[i,5]<- scientific(df[i,4]/df[i,3]/100,digits=3)
}
datavalues<-reactiveValues(data=df)
output$table <- renderRHandsontable({
mytab <- rhandsontable(datavalues$data, colHeaders=TRUE, rowHeaders=TRUE)
return(mytab)
})
observeEvent(
input$table$changes$changes,
{
xi= input$table$changes$changes[[1]][[1]]
datavalues$data<-hot_to_r(input$table)
for(i in 2:(nrow(df)))
{
datavalues$data[xi+i,3]<-datavalues$data[i-1,1]+(datavalues$data[i,1]-datavalues$data[i-1,1])/2
datavalues$data[xi+i,4]<-(datavalues$data[i,2]-datavalues$data[i-1,2])
datavalues$data[xi+i,5]<- scientific(datavalues$data[i,4]/datavalues$data[i,3]/100,digits=3)
}
}
)
output$plot<-renderPlotly({
plt<-
ggplot(datavalues$data,aes(A,B))+
geom_point()+
geom_line()+
xlab("A")+
ylab("B")
p<-config(ggplotly(plt),mathjax = 'cdn')
p
})