Есть ли способ смешать actionButton и selectInput для манипулирования rhandsontable в блестящем приложении? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть rhandsontable с XY-координатами в моем приложении Shiny, которым я бы хотел манипулировать тремя различными способами: 1) Прямое изменение значения с помощью клавиатуры.2) Использование actionButtons (в этом случае увеличить или уменьшить значение на 0,5).3) Использование selectInput для «копирования / вставки» существующей точки.

Я хотел бы манипулировать этими координатами, чтобы получить интерактивный / реактивный график.

При использовании следующего кода единственной модификацией, которая учитывается на графике, является модификация из actionButton.

Выбранный ввод вообще не учитывается, и когда я пытался datavalue$data <- dta[select$input,]тогда actionButton не было учтено.

Кроме того, если я вручную (с помощью клавиатуры) изменю значение на rhandsontable, вы увидите изменение в выводе таблицы, но оно также не будетПринято во внимание в сюжете.

library(shiny)
library(rhandsontable)
library(ggplot2)

dta <- data.frame(x = c(1, 2), y = c(3, -1))
rownames(dta) <- c("a", "b")
New_Point <- data.frame(x = 0, y = 0)



######## UI
ui <- fluidPage(
  fluidRow(
    column(4,
           fluidRow(
             column(12,selectInput("select", "Select row", choices = rownames(dta)))),
           fluidRow(
             column(6,
                    rHandsontableOutput("dbTest", height = "200%")),
             column(6,
                    actionButton("btn1", "<"),
                    actionButton("btn2", ">"),
                    br(), #space breaker
                    actionButton("btn3", "<"),
                    actionButton("btn4", ">")))
           ),
    column(8,plotOutput("plotTest"))
    )
  )




######## Server
server <- function(input, output, session) {


  datavalue <- reactiveValues(data=New_Point)

  # Action Buttons
  observeEvent(input$btn1, {
    datavalue$data[1,1] <- datavalue$data[1,1]-0.5})

  observeEvent(input$btn2, {
    datavalue$data[1,1] <- datavalue$data[1,1]+0.5
  })

  observeEvent(input$btn3, {
    datavalue$data[1,2] <- datavalue$data[1,2]-0.5
  })

  observeEvent(input$btn4, {
    datavalue$data[1,2] <- datavalue$data[1,2]+0.5
  })

  # Test table
  output$dbTest <- renderRHandsontable({
    New_Point <- dta[input$select,]
    rhandsontable(t(datavalue$data),
                  colHeaders = "New Point",
                  rowHeaderWidth = 50) %>% 
      hot_col(1, format = "0.0", colWidths = 50)
  })

  #Plot
  output$plotTest <- renderPlot({
    ggplot(dta) +
      aes(x=x, y=y) +
      geom_point(size = 3) +
      theme_bw()+
      xlim(-5, 5) + 
      ylim(-5,5) +
      geom_point(data=datavalue$data, aes(x=x, y=y), size = 5, col = "red")
  })
}

shinyApp(ui, server)

Есть ли у кого-нибудь ссылки, которые я мог бы попробовать, или какое-либо решение, чтобы иметь возможность создать сюжет с учетом этих трех различных способов манипуляции rhandsontable в Shiny App?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...