Я пытаюсь включить набор данных в приложение Shiny, которое сначала читается и используется как есть, например, отображая его в виде таблицы.Я хотел бы позволить пользователю затем иметь возможность манипулировать этим набором данных и обновлять тот же вывод таблицы с обновленным набором данных.
Я могу заставить обе части работать отдельно - я могу отображать исходные данные, и яможет отображать реактивные обновленные данные.Но я не могу понять, как заставить оба работать, используя один и тот же набор данных?Приведенный ниже код представляет собой простой пример использования iris с попыткой отобразить исходный набор данных, а затем привязать его, чтобы в обновленном наборе данных отображалось в два раза больше строк при нажатии «Выполнить».Обратите внимание, что я преобразовал данные в data.table, потому что мой реальный код будет много использовать data.table.
library(shiny)
library(data.table)
iris <- as.data.table(iris)
ui <- fluidPage(
fluidRow(column(4, actionButton("run", "Run"))),
fluidRow(column(12, tabPanel(title = "tab1",
DT::dataTableOutput("table1"))))
)
server <- function(input, output, session) {
irisdata <- reactive({
irisdata <- iris
})
irisdata <- eventReactive(input$run, {
rbind(irisdata(), iris, fill = TRUE)
})
output$table1 <- DT::renderDataTable({
irisdata()
})
}
shinyApp(ui, server)
Результат rbind: Ошибка в: оценка вложена слишком глубоко: бесконечная рекурсия /options (выражения =)?
Что и следовало ожидать, я полагаю, что это самоссылка, но я не могу понять, как написать код в противном случае?