根据 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 中绘图 的相关文章

  • 在 R 中将本地日期时间转换为 UTC

    如何将本地日期时间转换为以下格式 12 31 2014 6 42 52 PM R 中的 UTC 我试过这个 as POSIXct as Date 12 31 2014 6 42 52 PM format m d Y H M S tz UTC
  • 为 PDF 输出添加 natbib 选项

    有没有办法指定natibib输出 PDF 时的选项bookdown 我希望 tex 输出具有命令 usepackage sort compress natbib 但似乎没有任何方法可以在 YAML 中指定它 我无法将命令添加到我的序言中 因
  • 是否可以使用像“tz=NULL”这样的东西?...“as.POSIXct”默认为依赖于语言环境的时区(与“as.Date”不同),这会导致问题

    我知道这是一个长期存在 根深蒂固的问题 但这是我经常遇到的问题 而且我看到初学者R经常与此斗争 我希望有一个令人满意的解决方案 到目前为止 我的谷歌和 SO 搜索都是空的 但如果在其他地方重复 请指出正确的方向 TL DR 有没有办法使用类
  • 使用梯度下降(最速下降)估计线性回归

    示例数据 X lt matrix c rep 1 97 runif 97 nrow 97 ncol 2 y lt matrix runif 97 nrow 97 ncol 1 我已经成功创建了成本函数 COST lt function th
  • 如何使用 ggplot 绘制矩阵图

    我想可视化一个矩阵 MAT lt matrix c 100 7 0 0 49 0 0 0 49 nrow 3 ncol 3 gt MAT 1 2 3 1 100 7 0 2 0 49 0 3 0 0 49 然而 标准方法不能正确地对小数字进
  • R 中的 For 循环分配给数据框

    运行 for 循环后 我在分配给数据帧时遇到问题 当我使用 print 时 它给出了我的价值 有什么解释吗 salesdate lt rep seq from as Date 2013 12 19 to as Date 2013 12 23
  • 根据绘图单击事件对数据框进行子集化

    我有下面的数据框 Name lt c John Bob Jack Number lt c 3 3 5 NN lt data frame Name Number 还有一个简单闪亮的应用程序 可以从中创建一个绘图直方图 我的目标是单击直方图的一
  • 如何在闪亮的应用程序中显示矩阵,并用条件指定颜色?

    我有一个具有正值和负值的矩阵 M 我正在尝试使用 DT 包在闪亮的应用程序中显示为表格 我想用不同的颜色显示矩阵 红色的正数和负数 例如 到目前为止 我只能以一对一的方式添加颜色 但我想以这种方式添加颜色 如果matrix values g
  • Sweave 缓存包

    我正在尝试编写一份报告 我的问题是每次我编译 R 时都会加载我在报告中使用的包 如 ggplot2 MASS cubature 这是非常耗时的 有没有办法查包裹 I found 缓存编织但它不起作用 这是我在 sweave 文件中添加的块
  • 对 R/Sweave 进行编程以获得正确的 \Sexpr 输出

    我在为 Sweave 进行 R 编程时遇到了一些问题 rstats twitter 小组经常指出这里 所以我想我应该把这个问题向大家提出 我是一名分析师 而不是程序员 所以在我的第一篇文章中请放轻松 问题是 我正在使用 R 在 Sweave
  • 如何连接 R 列表中的多个 .wav 文件?

    我有一个 wav 文件列表my list library seewave library tuneR data tico audio lt tico freq lt 22050 breaks lt c 0 0 2 0 4 0 6 0 8 i
  • 如何在 R 中使用 msgbox [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在中显示消息框R 我正在寻找类似的东西msgbox在 VBA 中 因此我可以向用户发出有关问题的警报 此外 我想允许一些用户交互 例如
  • 将一个大的 xlsx 文件导入到 R 中?

    我想知道是否有人知道从 大 xlsx 文件 20Mb 导入数据的方法 我尝试使用 xlsx 和 XLConnect 库 不幸的是 两者都使用 rJava 我总是收到相同的错误 gt library XLConnect gt wb lt lo
  • 将英寸高度的字符向量转换为厘米?

    我得到一个字符向量 tibble H c 6 2 5 10 5 5 5 1 5 5 5 4 我想将其转换为厘米 请告知我该怎么做 有几种方法可以使用 1 阅读与fread粘贴到单个字符串后 library data table fread
  • 在 R 中使用 ggplot2 叠加两个图

    有两个数据框 df1 df2我需要使用 ggplot2 创建线图并显示在同一个图表上 df1 x y 2 30 4 25 6 20 8 15 df2 x y 2 12 4 16 6 20 8 24 用于绘制第一个 df p1 lt ggpl
  • 通过排列进行多组测试

    我有一个 df 其中包含与两个实验相关的两组值 value 1 和 value 2 一个实验包含两组 0 和 1 另一个实验包含三组 0 1 2 test group Value 1 Value 2 AA 0 15 1 11 2 AA 0
  • Matlab中带误差条的直方图

    我想将误差条放在条形图中 每个条形上方 我试过 bincentres 85 10 85 nelements 1 4 14 24 46 57 63 63 174 147 69 49 22 9 4 2 1 0 err sqrt nelement
  • R 中的微秒时间戳

    在 CSV 文件中 我有几列 其中一列有时间戳 其中每个时间戳是今天午夜经过的微秒 每个 csv 文件仅包含一天内的数据 因此这并不含糊 我的问题是 如何将这些微秒时间戳解析为 R 多谢 我的 CSV 文件的一部分 34201881666
  • 在Python中从CSV文件中获取随机行并找到相应的单词,就像测验一样

    抱歉标题含糊不清 想不出更好的表达方式 我有一个包含德语 英语单词的 CSV 文件 如下所示 Ja Yes Nein No Katze Cat 我希望我的 python 脚本从 CSV 文件中打印一个随机的德语单词 并要求他们输入英语单词
  • 修改x轴刻度标签

    我正在尝试更改由生成的箱线图的 x 轴刻度标签ggplot2 x 轴是一个分类变量 HabFac 我想要的是将其刻度更改为 6 个化学品 A E 下面是我的代码 raw data read table Read data p TT ggpl

随机推荐

  • 按嵌套数组键分组

    我有一些示例数据 显示了与文档相关的一些数据 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