Получить дополнительные именованные атрибуты из actionButton в r Shiny - PullRequest
1 голос
/ 08 января 2020

Я обнаружил, что возможно добавить дополнительные аргументы в actionButton. Теперь, что я хотел бы знать, как получить этот дополнительный аргумент в наблюдаемом событии.

library(shiny)

  ui <- fluidPage(
    actionButton("goButton", "Go", value = 10)
  )

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

    observeEvent(input$goButton,{
      # print value argument of the action Button - should in that case always print 10
    })
  }

  shinyApp(ui, server)

Большое спасибо!

1 Ответ

1 голос
/ 08 января 2020

Видимо, value не очень полезен. Вот обсуждение этого вопроса. Это ответ Джо Чена на следующее замечание:

Я до сих пор не совсем понимаю сопротивление невозможности сброса в ноль - оно, по-видимому, не способствует любая плохая практика кодирования

Это, безусловно, способствует плохой практике кодирования. Просто посмотрите на все примеры кода в этой теме (конечно, не по вине пользователей - мы просто недостаточно хорошо поработали с образованием). Нажатие кнопки действия следует рассматривать как отдельное событие, а не как значение. Специальное значение 0 - это просто обходной путь, чтобы код не думал, что кнопка нажата при запуске. Это факт, что число изменилось, и это соответствующий сигнал, а не значение, которым это число было.

Если вы хотите посчитать, сколько раз была нажата эта кнопка, вот пример применения:

library(shiny)
library(shinyWidgets)

ui <- basicPage(
  actionButton("click", "Click"),
  verbatimTextOutput("number", placeholder = TRUE)
)

server <- function(input, output) {

  count <- reactiveValues(value = 0)

  observeEvent(input$click, {
    count$value <- count$value + 1
    output$number <- renderText(count$value)
  })

}

shinyApp(ui = ui, server = server)
...