选择已存储在闪亮服务器上的文件

时间:2013-07-21 11:54:43

标签: r shiny

我是RShiny的新手,我的Shiny服务器上存储了一些数据文件。

我想要做的是根据用户选择选择一个文件,然后将该文件读入数据框。

我目前正在获取object not found error,但名称已正确传输到服务器用户界面。

以下是一些代码,fisrt server.r

    library(shiny)
    library(datasets)
    filenames<-list.files(path="~/qc",pattern="\\.csv$")
    shinyServer(function(input,output){

    output$choose_dataset<-renderUI({
    selectInput("dataset","Data set",filenames)
    })
    output$data_table<-renderTable({
    selFile<-get(input$dataset)
    mydat<-read.csv(selFile$name,header=T)
    head(mydat,50)
    })
    })

以下是ui.r

    library(shiny)
    shinyUI(pageWithSidebar(
    headerPanel(
    "Files Selection"
    ),
    sidebarPanel(
    uiOutput("choose_dataset")
    ),
    mainPanel(
             tabsetPanel(
                         tabPanel("plot",plotOutput("plot"),id="myplot"),
                         tabPanel("Data",tableOutput("data_table"),id="myTab"),
                         id="Plot_Data"
                         )
    )
    ))         

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

我做了一些小改动,它对我有用。试着看看这对你有用。

server.R中,我将selectInput()移动到了UI.R,我也将文件名变量移动到UI.R. 现在,由于文件中的input$dataset,您无法获得get()命令。

Server.R

library(shiny)
library(datasets)
shinyServer(function(input,output){

  output$data_table<-renderTable({
    #selFile<-get(input$dataset)
    mydat<-read.csv(input$dataset, header=T)
    head(mydat,50)
  })
})

更新的UI.R

library(shiny)

filenames<-list.files(pattern="\\.csv$")

shinyUI(pageWithSidebar(
  headerPanel(
    "Files Selection"
  ),
  sidebarPanel(
    selectInput(inputId = "dataset",
                label = "Choose Dataset",
                filenames
                )    
  ),
  mainPanel(
    tabsetPanel(
      tabPanel("plot",plotOutput("plot"),id="myplot"),
      tabPanel("Data",tableOutput("data_table"),id="myTab"),
      id="Plot_Data"
    )
  )
))

试试这个,你不应该收到object not found错误。您可以使用这些文件作为基础,并在这些文件的基础上构建。

希望这有帮助。