我正在尝试在R中创建一个交互式闪亮应用,当您选择其他“分配组”时,它会发生变化。该图是一个密度图表,跟踪案例的解决时间(在应用程序之外正常工作)。
为什么运行应用时密度图不显示?
我不确定问题出在哪里,但是当我尝试运行应用程序时,情节从不渲染,侧面板上的选择显示同一组的多个条目(我只想为每个组一个) 。和R在一半时间内崩溃。
如果我使用较小的数据集(1000行,3列),应用程序不会崩溃,但有没有办法让我改进代码,以便它与我的数据集一起运行(约50,000行和3列) ?
不幸的是,我无法分享实际数据,但这里是我生成和测试的模拟数据 - 同样的问题只有R不会崩溃,因为它是一个较小的数据集。下面的代码将运行,但在应用程序中,我只看到键 - 没有图表,并且在调整窗口大小时缩放不会重新调整;
以下是代码;
library(shiny)
library(ggplot2)
trax_cond <- data.frame(
id = 1:6,
Assigned_Group3 = c("District of Columbia", "Ohio", "Oklahoma", "Tennessee", "Tennessee", "New York"),
Total.Time.Days = c(5.9, 9.1, 7.8, 3, 8.3, 12.2)
)
#check variable class in each column
sapply(trax_cond, class)
trax_cond$Assigned_Group3 <- as.factor(trax_cond$Assigned_Group3)
trax_list <- as.list(trax_cond)
ui <- fluidPage(
sidebarPanel(
selectInput(inputId = "Assigned_Group3", label = "Assigned Groups:", choices = trax_list$Assigned_Group3),
mainPanel(
tags$h1("Density Plot"),
plotOutput("P1")
)
)
)
###
server <- function(input, output){
selectedData <- reactive({
trax_cond[,trax_cond$Assigned_Group3]
})
output$P1 <- renderPlot({
library(ggplot2)
qplot(Total.Time.Days, data=trax_cond, geom="density", fill=Assigned_Group3, alpha=I(.5),
main="Distribution Days to Resolve", xlab="Resolution Time (Days)",
ylab="Density")
})
}
shinyApp(ui,server)
如何修复问题,并确保在调整窗口大小时输出调整大小?
答案 0 :(得分:0)
无法测试代码,我看到的一个错误是在服务器代码中:
selectedData <- reactive({
trax_cond[trax_cond$Assigned_Group3]
})
这应该是:
selectedData <- reactive({
trax_cond[,input$Assigned_Group3]
})
希望这有帮助。
修改强>
请参阅下面的代码,对您的代码进行一些小修改:
当您将用户指定的输入从ui传递到服务器时,可以使用input $ inputId访问该输入。如输入$ Assigned_Group3所示。 对于反应数据,您可以将qplot命令中的反应数据称为selectedData()。
library(shiny)
library(ggplot2)
trax_cond <- data.frame(
id = 1:21,
Assigned_Group3 = c("District of Columbia", "Ohio", "Oklahoma",
"Tennessee", "Tennessee", "New York"),
Total.Time.Days = c(5.9, 9.1, 7.8, 3, 8.3, 12.2)
)
#check variable class in each column
sapply(trax_cond, class)
trax_cond$Assigned_Group3 <- as.factor(trax_cond$Assigned_Group3)
trax_list <- as.list(trax_cond)
ui <- fluidPage(
sidebarPanel(
selectInput(inputId = "Assigned_Group3", label = "Assigned Groups:",
choices = trax_list$Assigned_Group3),
mainPanel(
tags$h1("Density Plot"),
plotOutput("P1")
)
)
)
###
server <- function(input, output){
selectedData <- reactive({
trax_cond[trax_cond$Assigned_Group3 == input$Assigned_Group3,]
})
output$P1 <- renderPlot({
library(ggplot2)
qplot(Total.Time.Days, data=selectedData(), geom="density", alpha=I(.5),
main="Distribution Days to Resolve", xlab="Resolution Time
(Days)",
ylab="Density")
})
}
shinyApp(ui,server)