Я довольно новичок в R Shiny, и у меня возникли некоторые проблемы с реактивными наборами данных.
Моя идея состоит в том, чтобы загрузить набор данных, выполнить некоторые вычисления, распечатать результат.Это не проблема, если я установил набор данных как
df <- reactive({data.frame(mtcars)})
df_transformed <- reactive({data.frame(tapply(mt$hp, mt$cyl, mean),
names(tapply(mt$hp, mt$cyl, mean))))}
, но теперь я не могу перезаписать исходный набор данных осмысленным образом.Я немного искал переполнение стека и нашел только то, как решить одну из этих двух проблем, которые как бы исключили друг друга.
Я бы хотел что-то подобное, но работало:
server <- function(input, output) {
vals <- reactiveValues()
## Create a reactive value dataset
vals$mt <- data.frame(mtcars)
## Create a transformed set out of it
vals$mt_transformed <- data.frame(tapply(mt$hp, vals$mt$cyl, mean),
names(tapply(vals$mt$hp, vals$mt$cyl, mean)))
names(vals$mt_transformed) <- c("hp", "cyl")
## Transform the initial dataset, via deleting the last row
observeEvent(input$delete, {
vals$mt <- vals$mt[-nrow(vals$mt),]
})
## lets hope the plot changes everytime I delete a car
output$plot <- renderPlot({
ggplot(vals$mt_transformed) +
geom_bar(
aes(x = cyl, y = hp ),
stat = "identity"
)
})
#
}
и для полноты:
library(shiny)
library(ggplot2)
ui <- fluidPage(
actionButton(inputId = "delete", label = "destroy car"),
plotOutput("plot")
)
Заранее спасибо, Маркус