我正在尝试从我上传到应用程序的“car”数据集中获取速度变量。基本上在选择速度下:我希望所有数字都出现在数据集$ speed中。在selecInput下,选项应该取决于我使用fileInput上传的数据集。我该如何完成这项任务。现在我已经将选项添加为1,2,3。理论上应该存在汽车数据集的速度变量的所有值。
library(shiny)
library(datasets)
##the file I am uploading
data(cars)
dataset=write.csv(cars, "dataset.csv")
ui=fluidPage(
actionButton("upload", "Upload File"),
bsModal("uploadFile", " ", "upload",
sidebarLayout(
sidebarPanel(
fileInput("file","Choose file to upload")
),
mainPanel(
tableOutput("contents")
)
)
),
sidebarLayout(
sidebarPanel(
column(3, selectInput("selectElement", "Select speed:", c(1,2,3),multiple =
T, selectize = F)
)
),
mainPanel(
)
)
)
server=function(input,output,session){
output$contents <- renderTable({
inFile <- input$file
if (is.null(inFile))
return(NULL)
read.csv(inFile$datapath)
})
}
shinyApp(ui,server)
答案 0 :(得分:1)
我提前道歉,因为回复有点不完整:见下文。
首先,回答您的问题:
如果你有像汽车这样的数据集,要识别你可以做的“速度”标签:
labls <- unique(cars$speed)
...
selectInput("selectElement", "Select speed:", labls, multiple =
T, selectize = F)
我希望发布一个完整的例子,但当前的逻辑(可能是因为发布了有限的代码?)似乎不正确:应用a)如何留给用户选择使用哪个文件;并且同时b)已经过滤速度? 当然,您可能计划显示具有所谓“速度”列的数据集,然后它会有意义:)
此外,但这不是您的问题的一部分,您似乎通过包装shinyBS使用模态对话。
由于版本0.14闪亮(2016年10月左右)闪亮有一个非常好的模态功能,我个人认为最好使用原生功能。
我想发布一个从您的代码派生的简单示例(但是注释掉了selectInput for speed,因为如上所述,它不会出现在发布的示例的上下文中。)
library(shiny)
library(datasets)
data(cars)
dataset = write.csv(cars, "dataset.csv")
labls <- unique(cars$speed) # I left this in the code
ui=fluidPage(
sidebarLayout(
sidebarPanel(
actionButton("upload", "Upload File")
),
mainPanel(tableOutput("contents") )
))
server=function(input,output,session){
# Show modal when button is clicked.
observeEvent(input$upload, {
showModal(dataModal())
})
dataModal <- function(failed = FALSE) {
modalDialog(
fileInput('inputId', label=NULL, multiple = FALSE, accept = NULL, width = NULL, buttonLabel = "Browse...", placeholder = "No file selected")
# , selectInput("selectElement", "Select speed:", labls, multiple =
# T, selectize = F)
)
}
output$contents <- renderTable({
if (length(input$inputId )== 0) return(NULL)
inFile <- input$inputId
# if (is.null(input$selectElement )) return(NULL)
input$inputId
})
}
shinyApp(ui,server)