r - 从文件输入更新闪亮表
问题描述
我正在尝试创建一个闪亮的/flexdashboard,其中可以通过上传新文件来刷新表格。
下面的代码是一个简单的仪表板,其中包含一个表(使用 formattable),该表首先加载了一个数据集。用户可以使用文件上传小部件上传新数据集 - 我想了解上传完成后如何刷新表格。这应该在new_df_tbl
事件中完成吗?
该示例是自包含的,可以直接在 Rstudio 中使用。
---
title: "Basic"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shinyWidgets)
library(shiny)
library(formattable)
library(tidyverse)
```
```{r}
df <- data.frame(
x = rnorm(100),
y = rnorm(100)
)
```
```{r}
df_tbl <- reactive({
df %>% select(x, y) # do some stuff here but for simplicity we do nothing
})
```
Sidebar {.sidebar}
=======================================================================
```{r}
fileInput("file1", "Choose CSV File",
multiple = FALSE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv"))
br()
actionButton(inputId = "apply", label = "Apply", icon = icon("play"))
```
```{r}
rv <- reactiveValues(data = NULL)
rv <- df
observeEvent(eventExpr = input$apply,
handlerExpr = {
req(input$file1)
file <- read_csv(input$file1$datapath)
rv$data <- file
}, ignoreNULL = FALSE)
```
Main
=======================================================================
Column
-----------------------------------------------------------------------
### Table
```{r}
renderFormattable({
formattable(df_tbl())
})
```
解决方案
更新了您的代码。
rv <- reactiveValues(data = NULL)
rv$data <- df
observeEvent(eventExpr = input$apply,
handlerExpr = {
req(input$file1)
file <- read_csv(input$file1$datapath)
rv$data <- file
}, ignoreNULL = FALSE)
无论您在哪里调用您的表,请使用rv$data
. 当用户加载文件时,这应该会更新您的表。
推荐阅读
- json - 如何动态更改图标大小以创建比例符号图
- php - 即使在父范围内未设置,后期绑定闭包变量也可用
- c++ - C++ 使用 any_of 比较向量不起作用
- python - 如何检查函数是否已定义?蟒蛇菜鸟
- angular - 如何在 Angular 中对卡片进行分页?
- javascript - WebStorm2019.2.1 + Flow - 无法在使用 Yarn 工作区的 monorepo 中解析模块“XYZ”
- postgresql - PostgreSQL 12.1 中的语句日志记录。与早期版本相比有什么变化吗?
- url - 使用 URL 重定向站点防止 Telegram 链接预览
- python - 如何从 tkinter 的下拉菜单中提取信息?
- css - 如何在网格行的末尾添加空白而不拉伸项目