【问题标题】:R Shiny: How to read different CSV file based of user input?R Shiny:如何根据用户输入读取不同的 CSV 文件?
【发布时间】:2021-12-29 19:19:00
【问题描述】:

我正在开发一个 flexdashboard 闪亮的应用程序,并尝试创建一个反应函数,该函数根据用户输入导入不同的数据集(通过 read.csv())。

我在一个名为“Test”的文件夹中有 2 个空的 csv 文件。一个称为 2021 年 10 月,另一个称为 2021 年 11 月。

而不是加载所有 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()
  )
)

```

我认为这可行,但我收到错误“$ 运算符对原子向量无效”

【问题讨论】:

标签: r shiny flexdashboard


【解决方案1】:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 2022-01-20
    • 1970-01-01
    • 2021-12-14
    • 2018-05-24
    • 1970-01-01
    • 2017-09-04
    • 2021-07-27
    相关资源
    最近更新 更多