几个星期前,我刚刚发现了一个闪亮的东西,现在我试图制作一个可以绘制一些图形的应用程序,但是在此之前,我坚持根据UI选择输入来转换数据框并得到一个错误:对象类型为'闭包”不是子集。
在我的数据框中,有5个不同的类别,每个类别都有2个存储。这些商店中的每一个都在媒体(电视,广播,互联网)上花钱,并且有记录何时以及在哪个媒体类型的商店上花了钱。我已经选择了输入,您可以在其中选择商店的类别,然后在数据框中包含对所选商店的观察。
这是我制作的数据:
library(shiny)
library(dplyr)
year <- sample(seq(as.Date('2017/01/01'), as.Date('2018/03/31'), by="day"), 800, TRUE) %>% as.character()
media <- sample(c("TV", "RADIO", "INTERNET"), 800, TRUE)
expenditure <- sample(50:150, 800, TRUE)
category <- rep(1:5,160)
store <- rep(11:20,80)
dff <- cbind(store, category) %>% unique() %>% as.data.frame()
data <- data.frame(year,media,expenditure,category,store)
有闪亮的代码:
runApp(list(
ui = basicPage(
sidebarPanel(
selectInput("kat", "Category", choices = unique(dff$category) , selected = unique(dff$category)[1]),
tags$hr(),
selectInput("brand", "Brandas", choices = dff$store[dff$category == unique(dff$category)[1]],
multiple = TRUE)
),
mainPanel(
tableOutput("var"),
uiOutput('table')
)
),
server = function(input, output, session) {
observe({
kat <- input$kat
updateSelectInput(session, "brand", choices = dff$store[dff$category == kat])
})
dff2 <- data
filterData2 <- reactive({
data.frame(dff2[which(dff2$category %in% input$kat & dff2$store %in% input$brand),])
})
frame <- renderTable({ filterData2() })
output$var <- frame
frame1 <- reactive(frame[frame$store %in% input$brand,]$expenditure)
output$table <- frame1
}
))
我希望转换后的数据框会显示在一年中不同月份的所选输入商店及其在每种媒体上的投资总额。 请给我一些代码示例的建议,该示例代码如何引用输入数据(商店,类别),我可以根据月份将商店的投资汇总到媒体上。