我是 R
和 Shiny
的新手,我的 Shiny
服务器上存储了一些数据文件。
我想做的是根据用户选择选择一个文件,然后将该文件读入数据框。
我目前收到一个未找到对象错误
,尽管该名称正在正确传输到服务器 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"
)
)
))
感谢您的帮助。
最佳答案
我做了一些小改动,它对我有用。尝试看看这对您是否也适用。
在 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
错误。您可以使用这些文件作为基础,并在此基础上进行构建。
希望这对您有所帮助。
关于r - 在已经存储在 Shiny 服务器上的文件中进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772051/