Реактивная переменная срабатывает слишком рано (при запуске приложения) в Shiny Dashboard

Меня удивляет, что это еще не упоминалось, поэтому для полноты ...

Вы можете выполнить распаковку списка с помощью оператора «splat»: *, который также будет скопируйте элементы вашего списка.

old_list = [1, 2, 3]

new_list = [*old_list]

new_list.append(4)
old_list == [1, 2, 3]
new_list == [1, 2, 3, 4]

Очевидным недостатком этого метода является то, что он доступен только в Python 3.5 +.

Сроки, однако, это работает лучше, чем другие распространенные методы.

x = [random.random() for _ in range(1000)]

%timeit a = list(x)
%timeit a = x.copy()
%timeit a = x[:]

%timeit a = [*x]

#: 2.47 µs ± 38.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
#: 2.47 µs ± 54.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
#: 2.39 µs ± 58.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

#: 2.22 µs ± 43.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
1
задан Lara Haase 25 March 2019 в 16:51
поделиться

1 ответ

Ваш пример не воспроизводим, потому что нет кода, который загружает ваши данные (скорее всего, за пределами пользовательского интерфейса и серверной части). Тем не менее, я думаю, что одна проблема заключается в том, что нет кода, который обновляет входной объект выбора. «renderUI» имеет элементы пользовательского интерфейса, которые обычно отображаются при выполнении определенных условий; код в вашем примере не имеет условий.

Попробуйте что-то похожее на приведенное ниже вместо функции renderUI:

    updateSelectInput(session, "camp",
                      choices = schoolchoices(),
                      selected = input$camp)

Также, если обновления на вашей карте все еще происходят слишком быстро, рассмотрите возможность использования функции isolate () в реактивном выражении school_choices. Вы можете даже изолировать все реактивы, кроме кнопки действия.

# From https://shiny.rstudio.com/articles/isolation.html
# The plot render function changes only when the "goButton" button changes, rather than every time the input slider "obs" changes

server <- function(input, output) {
  output$distPlot <- renderPlot({

    # Take a dependency on input$goButton
    input$goButton

    # Use isolate() to avoid dependency on input$obs
    dist <- isolate(rnorm(input$obs))
    hist(dist)
  })
}
0
ответ дан RDavey 25 March 2019 в 16:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: