我是R
和Shiny
的新手,我的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"
)
)
))
感谢您的帮助。
答案 0 :(得分:5)
我做了一些小改动,它对我有用。试着看看这对你有用。
在server.R
中,我将selectInput()移动到了UI.R,我也将文件名变量移动到UI.R.
现在,由于文件中的input$dataset
,您无法获得get()
命令。
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)
})
})
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
错误。您可以使用这些文件作为基础,并在这些文件的基础上构建。
希望这有帮助。