You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Shiny flexdashboard如何根据用户输入动态读取对应CSV文件

修复方案

报错原因

你收到的$ operator is invalid for atomic vectors报错是因为input$input_type本身就是返回用户选中的字符串值(比如"Oct 2021"),属于原子向量类型,不支持用$运算符二次提取属性,同时你原来的文件路径拼接逻辑完全错误。

需调整的核心点

  • 正确拼接文件路径:按「文件夹路径 + 选中的文件名 + .csv后缀」的规则拼接,推荐用file.path()自动适配不同操作系统的路径分隔符
  • 增加输入校验:用req()确保用户已选中选项后再执行读取逻辑,避免初始化时报错
  • 注意路径正确性:如果Test文件夹在你当前R的工作目录下,直接写"Test"即可,如果是在家目录下写"~/Test"

完整修改后代码

---
title: "Test"
output: 
  flexdashboard::flex_dashboard:
runtime: shiny
---

Page 1 
=====================================

Inputs {.sidebar}
-------------------------------------

```{r}
library(flexdashboard)
library(shiny)
library(DT)
library(readr)
selectInput("input_type","Select Month:", c("Oct 2021", "Nov 2021"))

Column

DATA OUTPUTS HERE

#Prepare data here 
data <- reactive({
  # 先校验输入存在
  req(input$input_type)
  # 拼接正确的文件路径,此处假设Test文件夹在当前工作目录下
  file_path <- file.path("Test", paste0(input$input_type, ".csv"))
  # 读取文件
  tmp <- read.csv(file_path)
  tmp
})
renderDataTable(
  datatable(
    data()
  )
)
如果你的Test文件夹存放在家目录,把`file.path`里的第一个参数改成`"~/Test"`即可。

内容的提问来源于stack exchange,提问作者RL_Pug
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:15:03