3

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

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

我目前得到一个object not found error, 虽然名称正在正确地传输到服务器 UI。

这是一些代码,首先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"
                         )
    )
    ))         

感谢您的帮助。

4

1 回答 1

5

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

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

服务器.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错误。您可以使用这些文件作为基础并在这些文件之上构建。

希望这可以帮助。

于 2013-07-22T18:52:02.757 回答