Я разрабатываю простое блестящее приложение, которое обеспечивает доступ к динамической диаграмме и соответствующей таблице. Соответствующая часть server.R
коды выглядит следующим образом:Создание объекта в Shiny out renderPlot для renderTable
output$some_plot<- renderPlot({
# Subset data on change in the indicator selection
chrt_demo_dta <- subset(x = dta_la_demo,
subset = <<my-conditions>>>)
# Define the demography chart
ggplot(data = chrt_demo_dta, aes(x = variable_a, y = variable_b)) +
geom_line(aes(colour = GEOGRAPHY_NAME), size = 2) +
theme_bw()}, height = 650, width = 800)
# Section generating table
output$chrt_demo_dta_tbl <- renderTable({chrt_demo_dta})
Проблема возникает, когда я пытаюсь получить доступ к таблице, я получаю следующее сообщение об ошибке:
Ошибки в FUNC(): объект «chrt_demo_dta 'не найден
оказывается, что объект chrt_demo_dta
создается за пределами области видимости в renderTable
. Мой вопрос, как я могу добиться следующего:
- Я хочу, чтобы на графике и соответствующей таблицы для обновления динамически при выборе, следовательно, моя идея встроить команду
subset
вrenderPlot
, который работает - Я хочу использовать одно и то же подмножество в соответствующей таблице. В идеале я бы хотел, чтобы не повторял команду подмножества. Поскольку у меня есть необходимый кадр данных готов оказывается, что это только вопрос доступа к нему через
renderTable
Я знаю код не является полностью воспроизводимым, но на данном этапе я не обязательно искать конкретное решение, но более общее руководство, можно ли получить доступ к объекту, созданному в пределах одного элемента сервера, из другого элемента сервера. Если нажатие наступает, я могу инкапсулировать механизм подмножества в функцию и называть его дважды, но это кажется довольно грязным решением.
Вы должны сделать chrt_demo_dta реактивной, например, иметь 'chrt_demo_dta <- реактивный ({subset (dta_la_demo ...})' в вашем теле сервера, а затем ссылаться на него в 'renderPlot' и' renderTable' с помощью 'chrt_demo_dta()' –
Как сделать 'chrt_demo_dta' глобальную переменную, используя двойную стрелку << -, таким образом вы можете получить к ней доступ в любой функции вне renderPlot – Oscar