- 数据集查看器**
你好,我正试图创建一个闪亮的应用程序,允许用户单独查看他们上传的数据集。
未上传文件时,将显示一条消息,要求用户上传其文件......一旦上传csv文件,消息将消失,并显示用户上传的数据集。
"我所尝试的"
我试过:在app. R和upload. R中使用conditionalPanels,为每个ui条件创建一个单独的R文件。我认为我的问题是output$table
(渲染主面板ui的函数)在文件上传后没有被触发。
"我的问题"
用户上传csv文件(任何可读csv文件)后,预先存在的消息不会被上传的数据集替换。
- 上传. R**
data = list()
numDatasets = 0
uploadSideUI <- function(id) {
ns <- NS(id)
tagList(
h2("Dataset Viewer"),
fileInput(ns("file"),label = "Upload File", multiple = FALSE, accept = ".csv")
)
}
uploadMainUI <- function(id) {
ns <- NS(id)
uiOutput(ns("table"))
}
uploadServer <- function(id) {
moduleServer(id, function(input,output,session){
observeEvent(eventExpr = input$file,
handlerExpr = {
df <- read.csv(file = input$file$datapath,header = FALSE)
data <<- c(data,list(df))
numDatasets <<- numDatasets + 1
})
output$table <- renderUI({
if(numDatasets ==0){
h2("please upload file")
}else{
req(input$file)
print(numDatasets)
lapply(1:numDatasets,function(i) {
dataframe = data[[i]]
tagList(
h2(paste("dataset",i)),
hr(),
datatable(dataframe,rownames = FALSE, option = list(scrollY="300px",searching=FALSE)),
br()
)
})
}
})
})
}
- 应用程序R**
#app.R
library(DT)
library(shiny)
source("testModule.R")
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
uploadSideUI("uploadPage")
),mainPanel(
uploadMainUI("uploadPage")
)
)
)
server <- function(input, output, session) {
uploadServer("uploadPage")
}
shinyApp(ui = ui, server = server)
我是新的模块化过程在光泽,所以如果你有任何其他的建议,请指出他们!谢谢提前!
1条答案
按热度按时间rsl1atfo1#
试试这个