我有一个闪亮的应用程序,下面该应用程序应该与选定的Frequency
相加Category
。但是由于某种原因input$investigate
无法识别。当我从闪亮的应用程序中运行聚合代码时,它就可以工作。我在应用程序下方也提供了数据集。是命名问题还是闪亮问题?这就是我想知道的。
x <- data.frame(CategoryA=factor(c("First", "First", "First", "Second",
"Third", "Third", "Second")),
CategoryB=factor(c("First", "First", "First", "Second",
"Third", "Third", "Second")),
Frequency=c(10,15,5,2,14,20,3))
summ<-data.frame(aggregate(x$Frequency, by=list(x$CategoryA), FUN=sum))
library(shiny)
ui <- pageWithSidebar(
headerPanel('k-means '),
sidebarPanel(
uiOutput("inv")
),
mainPanel(
dataTableOutput("tab1")
)
)
server <- function(input, output, session) {
output$inv<-renderUI({
radioButtons("investigate", label ="Select Category",
choices = colnames(x)[1:2],
selected = "CategoryA")
})
datasett<-reactive({
summ<-data.frame(aggregate(Frequency ~ input$investigate, x, sum))
summ
})
output$tab1<-renderDataTable({
datasett()
})
}
shinyApp(ui, server)
答案 0 :(得分:2)
请注意,您正在传递公式来聚合Frequency ~ input$investigate
,但也请注意,input$investigate
返回的是字符值,而不是带有值的“变量”。您基本上在跑步
data.frame(aggregate(Frequency ~ "CategoryA", x, sum))
不起作用。您需要创建一个合适的公式,例如
data.frame(aggregate(Frequency ~ CategoryA, x, sum))
最简单的方法是使用reformulate()
命令,该命令可以将字符值转换为公式。更新您的代码以使用
data.frame(aggregate(reformulate(input$investigate,"Frequency"), x, sum))