Я не могу найти документацию о том, как форматировать значения ползунка из динамических данных. Я пытался обернуть доллар и доллар_формат вокруг значений диапазона ползунка, но это не помогло мне.
ui <- fluidPage(
headerPanel(title = "Test"),
sidebarLayout(
sidebarPanel(
fileInput("NewData", "Upload File", multiple = FALSE, accept = ".xlsx")
),
mainPanel(
tabsetPanel( type = "tabs", #Open panel
tabPanel("Distributions 1",plotOutput("hist1.plot")
,uiOutput("updaterange")
)
),
tabsetPanel( type = "tabs", #Open panel
tabPanel("Distributions 2",plotOutput("hist2.plot")
#,uiOutput("update_mod_hist_range")
)
)
) # close mainPanel
) # close sidebarLayout
) # close fluidPage
server <- function(input,output){
ev = reactiveValues()
observeEvent(input$NewData,{
if(is.null(input$NewData))
return(NULL)
ev$sim.data <- read_excel(input$NewData$datapath)
req(ev$sim.data)
amount = c(sapply(ev$sim.data$amt,function(x){runif(1000,1,x)}))
cat = (rep(ev$sim.data$cat, each = 1000))
hist.data = data.frame(amount,cat)
names(hist.data) = c("amount","cat")
hist.data$cat = factor(hist.data$cat, levels = c("a","b","c"))
low = mean(hist.data$amount)-sd(hist.data$amount)
high = mean(hist.data$amount) + sd(hist.data$amount)
ev$low = low
ev$high = high
ev$hist.data <- hist.data
output$updaterange = renderUI({
sliderInput("update_mod_hist_range","Update this Histogram",
min = min(ev$hist.data$amount),
max = max(ev$hist.data$amount),
value = c(ev$low,ev$high)
)
})
pricedata = ddply(hist.data, c("cat"), plyr::summarize, avg = mean(amount), minus.stdev = mean(amount)-sd(amount),
plus.stdev = mean(amount) + sd(amount))
pricedata = pricedata[order(pricedata$avg),]
output$hist1.plot = renderPlot({
ggplot(subset(hist.data, cat!="" ),
aes(x=amount, fill = cat))+
geom_histogram(color="white", alpha = .8, position = 'identity', binwidth = 5)+
theme_test()+
geom_vline(aes(xintercept = avg), data = pricedata, color = "black", size = 1)+
geom_vline(aes(xintercept = minus.stdev), data = pricedata, color = "black", size = .75, linetype = "dotted")+
geom_vline(aes(xintercept = plus.stdev), data = pricedata, color = "black", size = .75, linetype = "dotted")+
facet_grid(cat ~., scales = "free")+
scale_y_continuous(expand = c(0,0),name = "Count")+
scale_x_continuous(labels = scales::dollar, name="\nAmount", limits = c(0,100))
}) #close renderPlot
})
observeEvent(input$update_mod_hist_range,{
if(is.null(input$update_mod_hist_range)) return(NULL)
mod.amount = runif(1000,input$update_mod_hist_range[1],input$update_mod_hist_range[2])
#mod.amount = runif(1000,ev$low,ev$high)
cat = rep("x",1000)
mod.hist.data = data.frame(mod.amount,cat)
names(mod.hist.data) = c("amount","cat")
#mod.hist.data$cat = factor(mod.hist.data$cat, levels = c("a","b","c"))
pricedata2 = ddply(mod.hist.data, c("cat"), plyr::summarize, avg = mean(amount), minus.stdev = mean(amount)-sd(amount),
plus.stdev = mean(amount) + sd(amount))
pricedata2 = pricedata2[order(pricedata2$avg),]
output$hist2.plot = renderPlot({ # open renderPlot
ggplot(mod.hist.data, aes(x=amount))+
geom_histogram(color="white", alpha = .8, position = 'identity', binwidth = 5)+
theme_test()+
geom_vline(aes(xintercept = avg), data = pricedata2, color = "black", size = 1)+
geom_vline(aes(xintercept = minus.stdev), data = pricedata2, color = "black", size = .75, linetype = "dotted")+
geom_vline(aes(xintercept = plus.stdev), data = pricedata2, color = "black", size = .75, linetype = "dotted")+
#facet_grid(cat ~., scales = "free")+
scale_y_continuous(expand = c(0,0),name = "Count")+
scale_x_continuous(labels = scales::dollar, name="\nAmount", limits = c(0,100))
}) #close renderPlot
})
} # close shinyServer
shinyApp(ui = ui, server = server)
Входной файл excel (не могу прикрепить файл):
a1 = amt
a2 = 50
a3 = 60
a4 = 70
b1 = cat
b2 = a
b3 = b
b4 = c
вы можете видеть на рисунке ниже, что минимальное и максимальное значения имеют много десятичных знаков в конце.