r - Shiny App Dashboard - 删除导入文件的“清除”按钮
问题描述
我打算添加一个“清除”按钮来删除导入的文件,而不是重新启动 R 会话。但是在 R studio 中导入文件时收到错误消息 “警告:<-: 'closure' 类型的对象不是子集的对象中的错误” 。
用户界面.R:
tabItem(tabName = "datexp",
fluidRow(
box(width = 12,
title = "Dataset for Exploration", status = "primary",
solidHeader = TRUE, collapsible = TRUE, collapsed = TRUE)
),
fluidRow(
column(width = 3,
fluidRow(
# Box to upload initial dataset.
box(width = 12,
height = 500,
fileInput("file", "Select Dataset"),
actionButton("upload", "Import"),
actionButton('reset', 'Clear'),#Clear input dataset#
hr(),
……
服务器.R:
dataset <- reactive({
file <- input$file
if (is.null(file)){
return(NULL)
}else if(endsWith(file$name, '.sas7bdat')){
dat <- setDT(read_sas(file$datapath))
}else if(endsWith(file$name, '.xlsx')){
dat <- setDT(read_excel(file$datapath))
}else if(endsWith(file$name, '.csv')){
dat <- setDT(read_csv(file$datapath))
}
dat
})
#Clear button
observeEvent(input$upload, {
req(input$reset)
dataset$data <- NULL
})
解决方案
也许你正在寻找这样的东西......
library(shiny)
library(shinydashboard)
library(data.table)
library(haven)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
fluidRow(
box(width = 12,
title = "Dataset for Exploration", status = "primary",
solidHeader = TRUE, collapsible = TRUE, collapsed = TRUE)
),
fluidRow(
column(width = 3,
fluidRow(
# Box to upload initial dataset.
box(width = 12,
height = 500,
fileInput("file", "Select Dataset"),
actionButton("upload", "Import"),
actionButton('reset', 'Clear'),#Clear input dataset#
hr()
)
)
)
),
fluidRow(
box(width = 12,
DTOutput("t1"))
)
)
)
server <- function(input, output, session) {
dataset <- reactive({
req(input$file)
file <- input$file
if (is.null(file)){
return(NULL)
}else if(endsWith(file$name, '.sas7bdat')){
dat <- setDT(haven::read_sas(file$datapath))
}else if(endsWith(file$name, '.xlsx')){
dat <- setDT(read_excel(file$datapath))
}else if(endsWith(file$name, '.csv')){
dat <- setDT(read_csv(file$datapath))
}
dat
})
mydf <- reactiveValues()
### load data
observeEvent(input$upload, {
mydf$data <- dataset()
})
### Clear button
observeEvent(input$reset, {
mydf$data <- NULL
})
output$t1 <- renderDT({mydf$data})
}
shinyApp(ui, server)
推荐阅读
- reactjs - 我如何限制为反应js中的特定列表呈现的数据列表
- python - /post/new/ NOT NULL 约束处的 IntegrityError 失败:blog_post.author_id
- angular - 使用 Angular 在完整日历中更改日背景颜色
- java - 使用弹簧批处理读取文本文件,其中记录的长度不同,即不是固定长度
- c++ - 这个 void* hack 不好吗?
- c# - 试图打印数据网格视图,它是从左到右
- python - 如何从列表a中减去列表b中项目的每个实例
- python - 如何从复杂的 str 中获取 df?
- java - 在 Android Studio Activity 中显示条款和条件
- solidity - 在solidity中使用Remix遇到错误:错误:无效的BigNumber字符串(argument =“value”,value =“”,code = INVALID_ARGUMENT,version = bignumber / 5.1.1)