根据 csv 文件的列名创建选择列表,以便在 Shiny 中绘图

2024-01-01

我正在尝试构建一个闪亮的应用程序,我可以在其中上传 csv 文件并根据列名称填充 ui 中左列(滑动栏列)上的复选框。根据为 y 轴选择的列和为 x 轴选择的列,需要能够使用 ggplot 创建图表。

我的 ui.R 看起来像这样:

shinyUI(pageWithSidebar(
  headerPanel("CSV Viewer"),
  sidebarPanel(
    fileInput('file1', 'Choose CSV File',
              accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')),
    tags$hr(),
    checkboxInput('header', 'Header', TRUE),
    radioButtons('sep', 'Separator',
                 c(Comma=',',
                   Semicolon=';',
                   Tab='\t'),
                 'Comma'),
    radioButtons('quote', 'Quote',
                 c(None='',
                   'Double Quote'='"',
                   'Single Quote'="'"),
                 'Double Quote'),

   checkboxGroupInput("variable", "Variable:", choices = names(data_set))
  ),
  mainPanel(
    tableOutput('contents')


  )
))

Server.R 看起来像这样:

shinyServer(function(input, output) {
  output$contents <- renderTable({

    # input$file1 will be NULL initially. After the user selects and uploads a 
    # file, it will be a data frame with 'name', 'size', 'type', and 'datapath' 
    # columns. The 'datapath' column will contain the local filenames where the 
    # data can be found.

    inFile <- input$file1

    if (is.null(inFile))
      return(NULL)

    data_set<-read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote)
  })

  output$choose_dataset <- renderUI({
    selectInput("dataset", "Data set", as.list(data_sets))
  })

  # Check boxes
  output$choose_columns <- renderUI({
    # If missing input, return to avoid error later in function
    if(is.null(input$dataset))
      return()

    # Get the data set with the appropriate name

    colnames <- names(contents)

    # Create the checkboxes and select them all by default
    checkboxGroupInput("columns", "Choose columns", 
                       choices  = colnames,
                       selected = colnames)
  })

})

我无法让它加载滑动条中数据集中的列名称?有任何指示我可以如何做到这一点。我正在加载 csv 文件,加载文件后,我需要能够使用数据集的列名称加载填充滑块。

更新编辑:

添加了来自 OP 的请求(请参阅已接受答案中的评论),以读取 csv 并选择用于绘图的轴ggplot。还为此添加了一个额外的答案。


这个答案只是修复了 csv 加载问题,请参阅下面我的下一个答案,了解实际上使用 ggplot 进行绘图的答案。

因此(合并成一个文件以使其更易于处理后),我添加了一个checkboxGroupInput到 ui 部分和相应的updateCheckboxGroupInput到服务器部分。当数据集发生变化时,我需要它来更新组,所以我稍微重组了代码,使得data_set加载部分areactive封装了updateCheckboxGroupInput里面一个observer.

所以这就是你想要的:

library(shiny)
library(shinydashboard)
library(leaflet)
library(data.table)

ui <- pageWithSidebar(
  headerPanel("CSV Viewer"),
  sidebarPanel(
    fileInput('file1', 'Choose CSV File',
              accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')),
    tags$hr(),
    checkboxInput('header', 'Header', TRUE),
    checkboxGroupInput("inCheckboxGroup",
                       "Checkbox group input:",
                       c("label 1" = "option1",
                         "label 2" = "option2")),
    radioButtons('sep', 'Separator',
                 c(Comma=',',
                   Semicolon=';',
                   Tab='\t'),
                 ','),
    radioButtons('quote', 'Quote',
                 c(None='',
                   'Double Quote'='"',
                   'Single Quote'="'"),
                 '"'),
    uiOutput("choose_columns")
  ),
  mainPanel(
    tableOutput('contents')
  )
)

server <- function(input, output,session) {
  dsnames <- c()

  data_set <- reactive({
    req(input$file1)
    inFile <- input$file1
    data_set<-read.csv(inFile$datapath, header=input$header, 
                       sep=input$sep, quote=input$quote)
  })
  output$contents <- renderTable({
    data_set()
  })
  observe({
    req(input$file1)
    dsnames <- names(data_set())
    cb_options <- list()
    cb_options[ dsnames] <- dsnames
    updateCheckboxGroupInput(session, "inCheckboxGroup",
                             label = "Check Box Group",
                             choices = cb_options,
                             selected = "")
  })

  output$choose_dataset <- renderUI({
    selectInput("dataset", "Data set", as.list(data_sets))
  })

  # Check boxes
  output$choose_columns <- renderUI({
    # If missing input, return to avoid error later in function
    if(is.null(input$dataset))
      return()

    # Get the data set with the appropriate name

    colnames <- names(contents)

    # Create the checkboxes and select them all by default
    checkboxGroupInput("columns", "Choose columns", 
                       choices  = colnames,
                       selected = colnames)
  })
}
shinyApp(ui, server)

这是一个屏幕截图:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据 csv 文件的列名创建选择列表,以便在 Shiny 中绘图 的相关文章

  • 使用底格里斯河从纬度/经度获取人口普查区

    我有相对较多的坐标 我想获取其人口普查区 除了 FIPS 代码 我知道我可以使用以下命令查找各个纬度 经度对call geolocator latlon 已完成here https stackoverflow com questions 5
  • 如何将列表列表写入 CSV 文件 Python?

    我有一个列表 例如 a b c d e f 我想将其写入 CSV 文件 如下所示 a b c d e f 我怎么做 我尝试过使用 csv writerows 但输出文件的每个字符位于不同的单元格中 并且全部位于同一行中 从某种意义上说 第一
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 在iPhone上将CSV文件读入sqlite3

    有没有办法在iPhone上将CSV文件读入sqlite3 sqlite3 是否有类似于 SQL 命令的功能 LOAD DATA LOCAL INFILE file csv INTO TABLE TABLENAME FIELDS TERMIN
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • R.matlab/readMat:readTag(this) 中出错

    我正在尝试使用 R matlab 将 matlab 文件读入 R 但遇到此错误 require R matlab r lt readMat file mat verbose T Trying to read MAT v5 file stre
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 逻辑回归/二项式的 glmnet 误差

    当尝试将 glmnet 与 family binomial 配合以进行逻辑回归拟合时 出现此错误 gt data lt read csv DAFMM HE16 matrix csv header F gt x lt as data fram
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • 为什么这些数字不相等?

    下面的代码显然是错误的 有什么问题 i lt 0 1 i lt i 0 05 i 1 0 15 if i 0 15 cat i equals 0 15 else cat i does not equal 0 15 i does not eq
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • 在 R 中使用 Huggingface Transformer 模型

    我正在尝试在 R 中使用不同的 Huggingface 模型 这是通过 reticulate 导入 Transformer 包来实现的 谢谢 https rpubs com eR ic transfoRmers https rpubs co
  • 如何在R中同时对三个字段进行网络分析

    如何在 R 中同时对三个字段进行网络分析 下面是示例数据以及desired output在最后一栏中 df lt data frame stringsAsFactors FALSE id 1 c ABC ABC BCD CDE DEF EF
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv

随机推荐

  • 按嵌套数组键分组

    我有一些示例数据 显示了与文档相关的一些数据 docs id 及其所指的人 details id const docs id 89 state accepted details id 20656 type Claimant name Fir
  • 获取linux中每个设备的内存映射

    如何获取 Linux 识别的所有物理设备的内存映射 我已经查看了 proc iomem 和 proc ioports 但是 我无法找到每个设备的内存映射 关于如何实现这一目标有什么想法吗 据我所知 唯一通用的方法是 proc iomem 这
  • 在 MVC3 中扩展不显眼的 javascript 以将样式添加到 div 客户端的最佳方法

    我正在使用 html5 Razor MVC3 利用 Twitter 的 Bootstrap 模板 我想要表单验证看起来像他们记录的那样光滑 http twitter github com bootstrap forms http twitt
  • 使用 boto,在 s3 上已存在的文件上设置 content_type

    我正在使用 django 存储和 s3boto 后端 根据这个问题 http code larlet fr django storages issue 5 s3botostorage set content type header acl
  • Redux Toolkit Streaming 更新 - 如何处理关系实体适配器?

    我正在处理使用 RTK 查询和实体适配器的聊天 我目前有 2 个不同的实体适配器 一种用于聊天 一种用于消息 如何选择特定聊天的所有消息 我是否需要在聊天适配器内存储消息 id 数组 还是选择所有消息并按parent chat uuid 属
  • Spring Web Flow 防止后退按钮使用

    因此 我在项目上使用 Spring Web Flow 并希望在元素上使用history discard 和history invalidate 属性 我已将这些属性放置在我想要的位置 但是 当我在转换上运行历史记录属性后尝试通过导航到视图来
  • UWP - 将 TextBox.Text 绑定到 Nullable

    目前无法绑定到任何内容 这是正确的吗 Nullable
  • 使用命名元组多处理对象 - Pickling 错误

    我在想要放入多重处理的对象中使用命名元组时遇到问题 我收到酸洗错误 我尝试了其他 stackoverflow 帖子中的一些方法 但没有成功 这是我的代码的结构 包主 测试模块 import myprogram package of clas
  • Cassandra数据复制问题

    我有一个 2 节点 cassandra 集群 复制因子为 2 并且 AutoBootStrap true 启动期间一切正常 两个节点都能看到对方 我们将这些节点称为 A 和 B 通过节点 A 将一组键和列 我们称之为 K1 添加到 cass
  • Swift 3:如何使用 AVVideoComposition 导出带有文本的视频

    我正在尝试使用AVVideoComposition在视频顶部添加一些文本并保存视频 这是我使用的代码 I 创建一个AVMutableComposition and AVVideoComposition var mutableComp AVM
  • 避免每次都执行 adb tcpip 5555

    我喜欢能够通过 WIFI 使用 ADB 来操作我的 Android 手机 通过 USB 连接后 我运行adb tcpip 5555 然后我可以断开 USB 并运行adb connect phone s IP 5555 我不喜欢的是 每次我必
  • 如何使用反应钩子获取网络摄像头?

    我正在尝试使用 React hooks 将网络摄像头源显示在我的应用程序上 我还需要能够从提要中捕获最新的图像 我相信我有基础 但缺少一些东西 import React useState useEffect from react expor
  • 如何在 dynamodb 本地执行更新

    目前我有 amazon dynamodb local 的本地图像 每当我尝试对数据库执行更新操作时 它都会创建一个重复行而不是更新现有记录 我的表定义是 TableName commission KeySchema AttributeNam
  • 禁用 Chromium“无法更新 Chromium”窗口通知

    我们在触摸屏 Linux 上以 kiosk 模式运行 Google Chromium 我们经常收到 无法更新 Chromium 窗口通知 我们还没有找到可以阻止这种情况的标志 有人有主意吗 这个Bug似乎四处飘荡Debian https b
  • “代表”发送电子邮件

    我收到了很多 代表 的电子邮件 例如 AddThis 插件代表从 addThis com 发送电子邮件 电子邮件受保护 cdn cgi l email protection 如何在 C ASP NET 中执行此操作 另外 如果我们使用 gm
  • Android 上视图背景颜色的动画变化

    如何在 Android 上以动画方式改变视图的背景颜色 例如 我有一个背景色为红色的视图 视图的背景颜色更改为蓝色 如何在颜色之间实现平滑过渡 如果无法通过视图来完成此操作 则欢迎使用替代方案 您可以使用新的属性动画 API http de
  • IList 构造函数参数和 AutoFixture

    Using 自动夹具 http autofixture codeplex com 我正在尝试构造匿名实例Project f new Fixture Customize new AutoMoqCustomization p f CreateA
  • 在 Django 中使用电子邮件地址或用户名登录用户

    我正在尝试创建一个身份验证后端 以允许我的用户使用他们的电子邮件地址或 Django 1 6 中的用户名和自定义用户模型登录 当我使用用户名登录时后端可以工作 但由于某种原因不能使用电子邮件登录 有什么我忘记做的事情吗 from djang
  • 我们可以使用亚马逊产品广告 API 只获取亚马逊 Prime 产品吗?

    我已经搜索了如何使用亚马逊产品广告 API 现在我可以使用亚马逊产品广告 API 搜索不同的产品 并且工作正常 但据我所知 我们只能从我们的帐户获得亚马逊 Prime 产品 当我使用亚马逊网站登录亚马逊帐户并搜索任何产品时 我只找到亚马逊
  • 根据 csv 文件的列名创建选择列表,以便在 Shiny 中绘图

    我正在尝试构建一个闪亮的应用程序 我可以在其中上传 csv 文件并根据列名称填充 ui 中左列 滑动栏列 上的复选框 根据为 y 轴选择的列和为 x 轴选择的列 需要能够使用 ggplot 创建图表 我的 ui R 看起来像这样 shiny