server = function(input, output){
values <- reactiveValues()
dataInput <- reactive({
if(input$dataset == 1){
data <- rock
} else if (input$dataset == 2 ){
data <- pressure
} else if (input$dataset == 3) {
data <- cars
} else if (input$dataset == 4) {
data <- read.csv(input$example$datapath)
}
})
observeEvent(input$load, {
values$data <- data.frame(dataInput())
# check the characters
if (any(sapply(values$data, is.character)) == TRUE) {
values$data[, sapply(values$data, is.character) == T] = lapply(values$data[, sapply(values$data, is.character) == T], as.factor)
} else {
values$data = values$data
}
})
shinyjs::onclick("imp_det", # here the nice visual effect
shinyjs::toggle(id = "details_import", anim = TRUE))
output$var1 <- renderUI({
nam <- colnames(values$data)
selectInput("var1", label = "Select x:",
choices = c(nam), multiple = F,
selected = nam[1])
})
output$var2 <- renderUI({
nam2 <- colnames(values$data)
selectInput("var2", label = "Select y:",
choices = c(nam2), multiple = F,
selected = nam2[1])
})
newdata <- observeEvent(input$select,
{values$df <- values$data[c(input$var1, input$var2)]
})
output$graph <- renderPlot({
validate(
need(input$select > 0, "Waiting for data")
) # load to select
df = values$df
plot(df[, c(1:2)]) # use it normally
})
output$summary <- renderPrint({
validate(
need(input$select > 0, "Waiting for data")
)
df <- values$df # same
descript_data = df %>%
summarise(m_1 = mean(df[,1]), sd_1 = sd(df[,1]),
m_2 = mean(df[,2]), sd_2 = sd(df[,2]))
colnames(descript_data) = gsub("1", colnames(df)[1], colnames(descript_data))
colnames(descript_data) = gsub("2", colnames(df)[2], colnames(descript_data))
descript_data = data.frame(descript_data)
values$descript_data = descript_data
descript_data
})
output$downloadSummary <- downloadHandler(
filename = function() {
paste("descriptive-",input$dataset, ".csv", sep = "")
},
content = function(file) {
write.table(values$descript_data, file, sep = ",",
row.names = FALSE)
}
)
}