使用 renderUI 在 ShinyR 中创建选项卡时如何在不同对象中重用数据集

2024-02-15

我开发了一个闪亮的应用程序,在不同的选项卡下包含几个绘图和数据。选项卡是使用另一个参数动态创建的。但每次我都必须对数据进行子集化以准备绘图。假设使用“mpg”子集数据,我在“mpg”选项卡中绘制了两种不同类型的图表,并且我不想在绘制绘图时每次都对数据进行子集化(目前我每次都进行子集化)。对于一个选项卡中的所有计算,我只想对数据进行一次子集化。感谢一些帮助

write.csv(mtcars,'mtcars.csv')

write.csv(mtcars,'mtcars.csv')

library(shiny)
library(plyr)
library(dplyr)
library(DT)
library(data.table)

ui <- pageWithSidebar(
    headerPanel = headerPanel('data'),
    sidebarPanel = sidebarPanel(fileInput(
            'mtcars', h4('Uplaodmtcardata in csv format')
    ),
    uiOutput('tabnamesui')),
    mainPanel(uiOutput("tabsets"))
 )

server <- function(input, output, session) {
    mtcarsFile <- reactive({
            input$mtcars
    })


    xxmtcars <-
            reactive({
                    read.table(
                            file = mtcarsFile()$datapath,
                            sep = ',',
                            header = T,
                            stringsAsFactors = T
                    )
            })

    tabsnames <- reactive({
            names(xxmtcars())
    })

    output$tabnamesui <- renderUI({
            req(mtcarsFile())
            selectInput(
                    'tabnamesui',
                    h5('Tab names'),
                    choices = as.list(tabsnames()),
                    multiple = T
                    # selected = SalesGlobalDataFilter1Val()
            )


    })

    tabnamesinput <- reactive({
            input$tabnamesui
    })

    output$tabsets <- renderUI({
            req(mtcarsFile())
            tabs <-
                    reactive({
                            lapply(tabnamesinput(), function(x)
                                    tabPanel(title = basename(x)

,fluidRow(splitLayout(cellWidths = c("50%", "50%"),

plotOutput(paste0('plot1',x)),

plotOutput(paste0('plot2',x)
                                    ))),fluidRow(splitLayout(cellWidths = 
c("50%", "50%"),

plotOutput(paste0('plot3',x)),

plotOutput(paste0('plot4',x)
                                                             ))),
                                    dataTableOutput(paste0('table',x))))
                    })
            do.call(tabsetPanel, c(tabs()))
    })



    observe(
            lapply(tabnamesinput(), function(x) {
                    output[[paste0('table',x)]] <- 
   renderDataTable({as.data.table((select(xxmtcars(),x)))#CODE REPEATED


                    })}))

    observe(
            lapply(tabnamesinput(), function(x) {
                    output[[paste0('plot1',x)]] <- 
   renderPlot({as.data.table((select(xxmtcars(),x)))%>%plot()#CODE REPEATED


                    })
            })
    )

    observe(
            lapply(tabnamesinput(), function(x) {
                    output[[paste0('plot2',x)]] <- 
     renderPlot({as.data.table((select(xxmtcars(),x)))%>%plot()#CODE #REPEATED


                    })
            })
    )

    observe(
            lapply(tabnamesinput(), function(x) {
                    output[[paste0('plot3',x)]] <- 
    renderPlot({as.data.table((select(xxmtcars(),x)))%>%plot()#CODE REPEATED


                    })
            })
    )


    observe(
            lapply(tabnamesinput(), function(x) {
                    output[[paste0('plot4',x)]] <- 
   renderPlot({as.data.table((select(xxmtcars(),x)))%>%plot()#CODE REPEATED


                    })
            })
    )

    }

runApp(list(ui = ui, server = server))

您可以将子数据保存到reactive对象并在需要时调用它。

library(shiny)
library(plyr)
library(dplyr)
library(DT)
library(data.table)

ui <- pageWithSidebar(
  headerPanel = headerPanel('data'),
  sidebarPanel = sidebarPanel(fileInput(
    'mtcars', h4('Uplaodmtcardata in csv format')
  ),
  uiOutput('tabnamesui')),
  mainPanel(uiOutput("tabsets"))
)

server <- function(input, output, session) {
  mtcarsFile <- reactive({
    input$mtcars
  })


  xxmtcars <-
    reactive({
      read.table(
        file = mtcarsFile()$datapath,
        sep = ',',
        header = T,
        stringsAsFactors = T
      )
    })

  tabsnames <- reactive({
    names(xxmtcars())
  })

  output$tabnamesui <- renderUI({
    req(mtcarsFile())
    selectInput(
      'tabnamesui',
      h5('Tab names'),
      choices = as.list(tabsnames()),
      multiple = T
      # selected = SalesGlobalDataFilter1Val()
    )


  })

  tabnamesinput <- reactive({
    input$tabnamesui
  })

  output$tabsets <- renderUI({
    req(mtcarsFile())
    tabs <-
      reactive({
        lapply(tabnamesinput(), function(x)
          tabPanel(title = basename(x)

                   ,fluidRow(splitLayout(cellWidths = c("50%", "50%"),

                                         plotOutput(paste0('plot1',x)),

                                         plotOutput(paste0('plot2',x)
                                         ))),fluidRow(splitLayout(cellWidths = 
                                                                    c("50%", "50%"),

                                                                  plotOutput(paste0('plot3',x)),

                                                                  plotOutput(paste0('plot4',x)
                                                                  ))),
                   dataTableOutput(paste0('table',x))))
      })
    do.call(tabsetPanel, c(tabs()))
  })

  # Save your sub data here
  subsetdata<-reactive({
    list_of_subdata<-lapply(tabnamesinput(), function(x) {
      as.data.table((select(xxmtcars(),x)))
    })
    names(list_of_subdata)<-tabnamesinput()
    return(list_of_subdata)
  })

  observe(
    lapply(tabnamesinput(), function(x) {
      output[[paste0('table',x)]] <- 
        renderDataTable({
          subsetdata()[[x]]
        })}))

  observe(
    lapply(tabnamesinput(), function(x) {
      for(i in paste0("plot",1:4)){
        output[[paste0(i,x)]] <-
          renderPlot({subsetdata()[[x]]%>%plot()#CODE REPEATED
          })
      }
    })
  )

}

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

使用 renderUI 在 ShinyR 中创建选项卡时如何在不同对象中重用数据集 的相关文章

  • 如何修改反应链以便最后修改的对象控制其他链接的对象?

    新注释 1 最终解决的代码发布在最底部 反映了 ismirsehregal 于 2021 年 12 月 3 日的解决方案 以及一些标记为 ADDED 和 MODIFIED 的小调整 ADD 是为了解决我在矩阵 2 添加值后从矩阵 1 中删除
  • 闪亮的仪表板侧边栏中的可折叠菜单项

    我的侧边栏中有两个菜单项 目前 如果我单击任何菜单项 则会显示所有菜单项的选项卡项 我想让它可折叠 如果我单击多个名称菜单 单个分析应该折叠 如果我单击单个分析 多个分析应该折叠 目前的设计是 相同的可重现代码是 library shiny
  • 渲染函数的反应性参数

    我在 Flexdashboard 中有一个表 其列数可以更改 我可以动态计算列的对齐方式 默认对齐方式 23 45作为字符向量 因此左对齐该值 尽管它是一个数字并且应该右对齐 问题是我无法将此对齐传递回renderTable作为一个值ali
  • 如何在Shiny中动态生成的条件面板中格式化条件?

    我正在尝试使用 for 循环在 Shiny 中创建小部件 每个块包含 label 复选框 选择选择器 两个数字输入 我想根据复选框的值和选择选择器的值来设置显示或隐藏两个数字输入的条件 在我创建的 for 循环中 我为每个小部件变量添加了一
  • R闪亮的html小部件之间的交互

    我正在开发一个 R 闪亮应用程序 它使用多个 html 小部件 特别是网络D3 d3热图 and 和弦诊断 这些小部件单独工作正常 但是 在同一页面中使用它们会留下一个空格处他们应该在哪里 这是显示错误的可重现代码 在 UI 中注释绘图线
  • 闪亮的演示文稿 (ioslides):自定义 CSS 和徽标

    我安装了以下内容 RStudio 预览版 版本 0 98 864 2014 年 5 月 24 日 knitr 和shiny 的开发版本 来自 devtools install github c yihui knitr rstudio shi
  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col
  • Shiny :针对所有错误显示一条消息

    我在 R 的 Shiny 中有一个应用程序 我想处理消息 以便用户看不到发生了什么错误 我知道通过 tags style type text css shiny output error visibility hidden shiny ou
  • 如何在Shiny中引用ui.R中的反应元素

    我正在使用 ShinyDND 包制作一个具有拖放功能的应用程序 我想将输入中的列表作为 DragSetUI 的参数传递 该函数需要在 ui R 中运行 我尝试了renderUI和uiOutput 它几乎可以工作 但是拖动的元素无法放置在放置
  • 如何使用Shiny中的下载按钮?

    我想下载一个csv使用 Shiny 中的下载按钮下载文件 该文件将使用辅助 r 脚本中的参数创建 SERVER output downloadData lt downloadHandler filename function paste d
  • R Shiny 中表格的条件格式

    我正在尝试可视化队列分析 并想使用RenderDataTable闪亮以获得这种可视化效果 我将能够突出显示基于具有值 1 0 的单独列的所有单元格 其中 1 被着色 0 不被着色 我尝试了几件事 包括尝试使用geom tile in ggp
  • Plotly legendgroup 用于子图,以便单个图例控制所有图表

    我在用着plotly in r生成许多 子图 下面显示了一个玩具示例 library shiny library dplyr library plotly Toy Example ui lt fluidPage h3 Diamonds pl
  • 如何在 R闪亮中使操作不间断

    在我闪亮的应用程序中 我有一个应该不断更新自身的输出 但是每当我执行长时间运行的计算时 输出就会暂停 我的问题是 如何让输出持续不间断地运行 请参阅下面的简短演示 时钟每一秒刷新一次 但如果我单击运行 5 秒的按钮 时钟就会暂停 libra
  • Leaflet R 闪亮:选择和缩放

    我正在开发一个带有闪亮和传单的工具 我希望当客户点击变量时 参见 UI 代码 例如 NE 地图会转到另一个视图 例如纯传单中的这样 L easyButton strong NE strong function zoomTo setView
  • 如何将闪亮 UI 输入框中的值传递回 R 脚本中的变量并运行它?

    我有以下代码source R我正打算逃离闪亮的 目前脚本中有硬编码值 例如 10000 55 15 200 等 以及这些值下面的一些矩阵相关元素 rnorm2 lt function n mean sd mean sd scale rnor
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对
  • 基于条件反应逻辑闪亮的 Flexdashboard

    我正在尝试有条件地进行一种类型的渲染 renderPlot 或其他 renderText 基于一些输入 这是我尝试过的 title Citation Extraction output flexdashboard flex dashboar
  • 我可以从 R Tools for Visual Studio 中运行 Shiny 应用程序吗

    如果我使用的话 是否可以从 Visual Studio 中运行 Shiny 应用程序Visual Studio 的 R 工具 RTVS 如果是 怎么办 我以为没有 结果发现有isRTVS 中的 运行闪亮应用程序 按钮
  • 在闪亮仪表板中显示/隐藏菜单项

    当进入应用程序时 我需要隐藏一个菜单项 当用户选择某个值时 菜单项必须出现 我努力了shinyjs功能hidden 并且它隐藏了一个 menuItem 但是当使用show or toggle 菜单项不会出现 我发现了Rshinydashbo

随机推荐

  • 存储枚举 MongoDB

    我在 Mongo 数据库中存储每个用户的排名 管理员 版主 用户 和成就等枚举 据我所知 Mongo 没有枚举数据类型 这意味着我必须使用其他类型来存储它 我曾想过使用整数来存储它 我认为它比存储可以轻松表示为整数的所有内容的字符串占用的空
  • MySQL 导出/导入中特殊字符丢失

    我正在尝试将 MySQL 3 23 58 数据库移动到运行 5 5 19 的其他服务器 旧的指定了 latin1 编码 据我所知 底层数据确实是 latin1 我尝试了很多事情 主要是 使用 mysqldump 和 latin1 编码标志从
  • java中如何让线程休眠特定时间?

    我有一个场景 我希望线程休眠特定的时间 Code public void run try do something Thread sleep 3000 do something after waking up catch Interrupt
  • 异步 WCF 方法 WebOperationContext 在等待后为 null

    在以下示例中 该方法公开为 WCF 服务操作 并且该服务托管在 IIS 中 进入该函数时 WebOperationContext Current 将按预期设置 然而 等待完成等待后 WebOperationContext Current 将
  • 如何使用CSS在占位符中获取星号

    I want to add an asterisk mark to placeholder of inputs Something like this 我已经搜索过互联网但找不到有效的解决方案 我目前的做法 目前我正在尝试将其添加到 aft
  • 很好的黄瓜教程,不依赖于 Rails [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个好的黄瓜教程 它不会强迫我使用 Rails 有什么好的建议吗 我相信Rspec 书 ht
  • 您指定了正确的主机或端口吗? Kubernetes 上的错误

    我已经按照 hello world 教程进行了操作http kubernetes io docs hellonode http kubernetes io docs hellonode 当我跑步时 kubectl run hello nod
  • ggplot2scale_x_连续限制或绝对

    我在循环中使用以下 ggplot2 v0 9 scale x continious 逻辑 按县名称 试图将每个县的数据绘制在具有相同 x 比例的单独图上 MaxDays 365 3 p lt p scale x continuous lim
  • 如何强制 IntelliJ 使用 Maven 下载 javadocs?

    我对项目结构中的一些 Maven 条目有以下描述 文件系统中确实不存在 Javadoc 文件 同时 它存在于中央存储库中 为什么没有下载 如何强制下载 UPDATE 这些选项已经开启 设置后尝试重新编译 关闭 打开等 单击IntelliJ右
  • ARM 皮质:使用位带的互斥体

    鉴于此 在 ARM Cortex M3 上 我可以 原子地读取一位 原子地设置一位 原子地清除一位 如何将这些组合起来形成互斥体样式的操作集 try lock take lock release lock 看起来try lock or ta
  • python 中使用 pandas dataframe 和 statsmodels 或 scipy 进行方差分析?

    我想使用 Pandas 数据框来分解一个变量的方差 例如 如果我有一个名为 度 的列 并且我已针对各种日期 城市以及夜间与白天对其进行了索引 那么我想找出该系列中的变化中有多少部分来自横截面城市变化 有多少来自时间序列变化 有多少来自夜间与
  • CSS:#id .class VS .class 性能。哪个更好?

    我认为这会更快 dialog videoContainer width 100px than videoContainer width 100px 当然不考虑这一点 videoContainer在第一个示例中 只会在以下样式下设置样式 di
  • 非空终止字符数组

    include
  • 使用带有导航器的滑动菜单的 Onsen-UI

    好的 问题是我有一个带页面的工作滑动菜单 现在我的一个页面有一个 ons list 通过单击ons list item 我想导航到带有后退按钮的新页面 我到处搜索但没有找到解决我的问题的任何正确方法 这是我的代码
  • 在集合视图中显示两个不同的单元格 - Swift 2.0 iOS

    我正在开发一个 交易 应用程序 我希望拥有静态数量的单元格 加载时 用户将看到 5 个单元格 每个单元格都显示一个标有 添加 的标签 当添加 玩家 时 该单元格显示玩家信息 其他 4 个单元格仍然显示 添加 标签 另一个是添加的 2个单元格
  • 从node js到django的csrf问题

    我想将 csrftoken 从 node js 传递到 django 我的 server js 中有这段代码 socket on unread global function data var values querystring stri
  • LINQ to SQL 谓词生成器

    我使用 PredicateBuilder 如下所示http www albahari com nutshell predicatebuilder aspx http www albahari com nutshell predicatebu
  • Python Selenium 打印文本字段的值显示为空。该值未打印

    我正在尝试将文本字段的值打印到控制台 该网页的文本字段中的值为 1 000 000 1 000 000 应该打印 但我的方法是打印空白 我正在使用 Python Webdriver 我正在使用 text 它应该获取文本字段的文本值 我的方法
  • 初始化并声明为“extern”,为什么我看到下面的警告? [复制]

    这个问题在这里已经有答案了 为什么我会看到以下警告 警告 i 已初始化并声明为 extern include
  • 使用 renderUI 在 ShinyR 中创建选项卡时如何在不同对象中重用数据集

    我开发了一个闪亮的应用程序 在不同的选项卡下包含几个绘图和数据 选项卡是使用另一个参数动态创建的 但每次我都必须对数据进行子集化以准备绘图 假设使用 mpg 子集数据 我在 mpg 选项卡中绘制了两种不同类型的图表 并且我不想在绘制绘图时每