【发布时间】:2018-11-27 11:08:10
【问题描述】:
希望你们一切都好。我在服务器的反应部分(if else 语句)中遇到问题。 在使用 radioButtons 选择 TTS 和 NTTS 后,我需要分别来自 mtcars 数据的 1:6 和 7:11 的列。我附上了与所需输出相匹配的图片。 我还附上了我的代码,有人可以弄清楚它们有什么问题吗? 非常感谢:)
library(shiny)
library(tidyr)
library(dplyr)
library(readr)
library(DT)
data_table <- mtcars
# Define UI
ui <- fluidPage(
downloadButton('downLoadFilter',"Download the filtered data"),
radioButtons(inputId = "columns", label = "choose variable",
choices =c("All","TTS", "NTTS"),
selected = c("All")),
selectInput(inputId = "cyl",
label = "cyl:",
choices = c("All",
unique(as.character(data_table$cyl))),
selected = "4",
multiple = TRUE),
selectInput(inputId = "vs",
label = "vs:",
choices = c("All",
unique(as.character(data_table$vs))),
selected = "1",
multiple = TRUE),
DT::dataTableOutput('ex1'))
server <- function(input, output) {
thedata <- reactive({
if(input$columns=='All'){
data_table
}
else if (input$columns== 'TTS'){
data_table<- data_table[,c(1:6),drop=FALSE] }
else
data_table<- data_table[,c(7:11),drop=FALSE]
if(input$cyl != 'All'){
data_table<-data_table[data_table$cyl %in% input$cyl,]
}
if(input$vs != 'All'){
data_table<-data_table[data_table$vs %in% input$vs,]
}
else
data_table })
output$ex1 <- DT::renderDataTable(DT::datatable(filter = 'top',
escape = FALSE,
options = list(pageLength =
10,
scrollX='500px',autoWidth = TRUE),{
thedata() # Call reactive
}))
output$downLoadFilter <- downloadHandler(
filename = function() {
paste('Filtered data-', Sys.Date(), '.csv', sep = '')
},
content = function(path){
write_csv(thedata(),path) # Call reactive thedata()
})}
shinyApp(ui = ui, server = server)
【问题讨论】:
-
医生您好。您能否解决您的问题以使其最小化stackoverflow.com/help/mcve,也就是说,删除代码直到您隔离问题?您能否澄清“我无法做到”:您能否展示您迄今为止所做的研究和实验?你也可以重新表述这个问题,让它询问细节而不是“你能帮我调试这段代码吗?”
-
完成了,请您再检查一遍
标签: r input datatable shiny dt