R Shiny:如何根据用户输入读取不同的 CSV 文件?
R Shiny: How to read different CSV file based of user input?
我有一个 flexdashboard 闪亮的应用程序,我正在开发并尝试创建一个反应函数,根据用户输入导入不同的数据集(通过 read.csv())。
我在名为“测试”的文件夹中有 2 个空的 csv 文件。一个称为 Oct 2021,另一个称为 Nov 2021。
而不是加载所有 csv 文件 - 我希望用户选择文件名并加载它。
这是我的代码
---
title: "Test"
output:
flexdashboard::flex_dashboard:
runtime: shiny
---
Page 1
=====================================
Inputs {.sidebar}
-------------------------------------
```{r}
library(flexdashboard)
library(shiny)
library(DT)
library(readr)
```
```{r}
selectInput("input_type","Select Month:", c("Oct 2021", "Nov 2021"))
```
Column
-----------------------------------------------------------------------
### DATA OUTPUTS HERE
```{r}
#Prepare data here
data <- reactive({
tmp <- read.csv(input$input_type$"~Test/")
tmp
})
```
```{r}
renderDataTable(
datatable(
data()
)
)
```
我认为这可行,但我收到错误消息“$ operator is invalid for atomic vectors”
input$input_type
是文件名,但要指定完整路径,我们需要将一些字符串粘贴在一起。 read.csv
可以这样使用:
read.csv(paste0('~/Test/', input$input_type, '.csv'))
闪亮应用示例:
library(shiny)
library(DT)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(selectInput("input_type","Select Month:", c("Oct 2021", "Nov 2021")),
actionButton('load_csv', 'Load csv')),
mainPanel(dataTableOutput('dt'))
)
)
server <- function(input, output, session) {
data <- eventReactive(input$load_csv, {
read.csv(paste0('~/Test/', input$input_type, '.csv'))
})
output$dt <- renderDataTable({
req(data())
datatable(
data()
)}
)
}
shinyApp(ui, server)
我有一个 flexdashboard 闪亮的应用程序,我正在开发并尝试创建一个反应函数,根据用户输入导入不同的数据集(通过 read.csv())。
我在名为“测试”的文件夹中有 2 个空的 csv 文件。一个称为 Oct 2021,另一个称为 Nov 2021。
而不是加载所有 csv 文件 - 我希望用户选择文件名并加载它。
这是我的代码
---
title: "Test"
output:
flexdashboard::flex_dashboard:
runtime: shiny
---
Page 1
=====================================
Inputs {.sidebar}
-------------------------------------
```{r}
library(flexdashboard)
library(shiny)
library(DT)
library(readr)
```
```{r}
selectInput("input_type","Select Month:", c("Oct 2021", "Nov 2021"))
```
Column
-----------------------------------------------------------------------
### DATA OUTPUTS HERE
```{r}
#Prepare data here
data <- reactive({
tmp <- read.csv(input$input_type$"~Test/")
tmp
})
```
```{r}
renderDataTable(
datatable(
data()
)
)
```
我认为这可行,但我收到错误消息“$ operator is invalid for atomic vectors”
input$input_type
是文件名,但要指定完整路径,我们需要将一些字符串粘贴在一起。 read.csv
可以这样使用:
read.csv(paste0('~/Test/', input$input_type, '.csv'))
闪亮应用示例:
library(shiny)
library(DT)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(selectInput("input_type","Select Month:", c("Oct 2021", "Nov 2021")),
actionButton('load_csv', 'Load csv')),
mainPanel(dataTableOutput('dt'))
)
)
server <- function(input, output, session) {
data <- eventReactive(input$load_csv, {
read.csv(paste0('~/Test/', input$input_type, '.csv'))
})
output$dt <- renderDataTable({
req(data())
datatable(
data()
)}
)
}
shinyApp(ui, server)