Блестящий наблюдатель — как использовать наблюдателя для обновления глобальных переменных?

Как я могу обновить глобальную переменную с помощью наблюдателя?

У меня есть пустой вид при запуске:

speciesChoices <- c()

Но я хочу добавить в него значения, когда что-то изменилось в пользовательском интерфейсе, поэтому он становится:

speciesChoices <- c(
    'PM2.5' = 'particles'
)

Является ли это возможным?

Мой код до сих пор...

ui.r:

speciesOptions <- selectInput(
    inputId = "species",
    label = "Species:",
    choices = c(
        # 'PM2.5' = 'particles',
        # 'Humidity %' = 'humidity'
    )
)

сервер.р:

speciesChoices <- c() # global variable

# Define server logic required to draw a histogram
shinyServer(function(input, output, session) {

   observe({
        key <- input$streams1

        stream <- fromJSON(paste(server, "/output/stream?public_key=", key, sep=""),flatten=TRUE)
        species <- as.data.frame(stream$species)

        # Set choices of title and code for select input.
        speciesChoices <- setNames(species$code_name, species$public_name)

        updateSelectInput(session, "species", choices = speciesChoices)
    })

})

Он обновляет только ввод в пользовательском интерфейсе, но не выбор видов на сервере.

Любые идеи?


person laukok    schedule 26.10.2016    source источник


Ответы (1)


Используйте что-то вроде speciesChoices <<- setNames(input$species$code_name, input$species$public_name). Вам нужен как оператор супер-назначения <<- для изменения глобальной переменной, так и вам нужно использовать input$_id_ для ссылки на входные данные, установленные в пользовательском интерфейсе.

Примечание: я не уверен, каков ваш эндшпиль, но убедитесь, что вы действительно хотите использовать наблюдателя, а не реактивного. Чтобы понять разницу между ними, см. Joe Слайды Ченга из useR2016.

person Bárbara Borges    schedule 26.10.2016