Как мне обновлять фрейм данных каждый раз, когда происходит действие в R Shiny?

#r #shiny

#r #блестящий

Вопрос:

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

Есть ли простой способ сделать что-то подобное, когда пользователь вводит свои входные данные?

 server <- function(input, output, session){
    df <- data.frame(c(12984 (input$spend *1000), input$sales)
}
  

Комментарии:

1. Вы знали об reactive() ?

2. Действительно, создайте реактивный объект, зависящий от соответствующих источников. Вот обзор от сотрудников RStudio относительно реактивности. Довольно простая вещь, которую нужно понять, если вы хотите разрабатывать полезные блестящие приложения.

3. Я не знаю, что делать. Мне нужен ответ…

Ответ №1:

Как предложено в комментариях, вы должны использовать реактивное выражение для использования реактивного ввода:

 server <- function(input, output, session){
  # Creation of the reactive function
  df <- reactive({
    data.frame(c(12984 (input$spend *1000), input$sales)
  })

  # Create reactive function output
  output$data <- renderTable( df() )
}
  

Обратите внимание, что реактивные данные — это функция, отсюда и вызов df() для генерации выходных данных.

Комментарии:

1. Вчера я нашел ответ. Мне не хватало () после df . Ты опередил меня в ответе на вопрос, лол, так что поздравляю!