В R Shiny, как вы вставляете выбранный пользователем ввод из пользовательского интерфейса в реактивный объект на сервере? - PullRequest
0 голосов
/ 15 октября 2019

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

По сути, я хочу взять пользователявыберите вход из пользовательского интерфейса и вставьте его в простой объект на сервере, который будет реагировать / обновлять при выборе нового входа.

Объект будет объединен в полный вызов API, и я хочу перезапустить вызов API на сервере с реактивным объектом, обновляемым каждый раз, когда для него выбирается новый вход (примечание: API не может быть запущенбез кода доступа, который является частью корпоративной учетной записи, поэтому прошу прощения за нерешительность поставить мой полный код, но мне просто нужна помощь с этой единственной функциональностью.)

В коде ниже:

сDollar General в качестве выбора по умолчанию в selectInput, я хотел бы, чтобы объект query был строкой символов "dollar% 20general", и реактивно изменить на "walmart", если Walmart будет выбран

Спасибо!

ui <- fluidPage

 sidebarLayout(
    sidebarPanel(

     selectInput("company", "Choose company:",
                  c("Dollar General" = "dollar%20general",
                    "Dollar Tree" = "dollar%20tree",
                    "Walmart" = "walmart"))

...

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

query <- paste(input$company)  
...

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Создайте два файла с именами ui.R и server.R, сохраните логику пользовательского интерфейса в ui.R и логику бэкэнда / объекта в server.R. Ниже приведена реализация.

Файл пользовательского интерфейса

# UI of app
ui <- fluidPage(

  # input
    sidebarLayout(
        sidebarPanel(
            selectInput("company", "Choose company:",
                        c("Dollar General" = "dollar%20general",
                          "Dollar Tree" = "dollar%20tree",
                          "Walmart" = "walmart"))
        ),

        # Output
        mainPanel(
           textOutput("Input") 
        )
    )
)

Сервер / Внутренний файл

server <- function(input, output) {

    # Show what was selected

    output$Input <- renderText({ #based on what you defined in the ui
        input$company
    })
}

Теперь сохраните их в каталоге, а затем вызовите runApp функцию.

~/newdir
|-- ui.R
|-- server.R

runApp("newdir")
0 голосов
/ 15 октября 2019

вы можете использовать reactiveValues() и observe. Это должно работать:

library(shiny)

# Define UI for application 
ui <- fluidPage(

    # your input
    sidebarLayout(
        sidebarPanel(
            selectInput("company", "Choose company:",
                        c("Dollar General" = "dollar%20general",
                          "Dollar Tree" = "dollar%20tree",
                          "Walmart" = "walmart"))
        ),

        # Determine Output
        mainPanel(
            textOutput("showInput") # you need to render this in your server file
        )
    )
)

server <- function(input, output) {

    # Show what was selected

    query <- reactiveValues()

    observe(
        query$test <- paste(input$company, "and test", sep = " ")
        )

    output$showInput <- renderText({ #based on what you defined in the ui
        query$test
    })
}

# Run the application 
shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...