在两个闪亮的应用程序之间切换

2024-02-21

所以我有两个独立的onefileshinyApps,带有 UI 和服务器,位于一个函数内。

现在我需要做的是在第一个应用程序中调用第二个应用程序。

这是一个简单的示例(功能被简化以显示我想要实现的功能):

appOne <- function() {
  app <- list(ui = NULL, server = NULL)
  app$ui <- fluidPage(fluidRow(
    column(3),
    mainPanel(h2("Welcome to the load page"),actionButton("browse", strong("Browse Variants"), class = "btn-success")))
  )
  app$server <- function(input, output, session) {
    observeEvent(input$browse, {
      appTwo()
    })
  }
  runApp(app)
}

appTwo <- function() {
  app <- list(ui = NULL, server = NULL)
  app$ui <- fluidPage(fluidRow(
    column(3),
    mainPanel(h2("Welcome to appTwo"), plotOutput("plot")))
  )
  app$server <- function(input, output, session) {
    output$plot <- renderPlot({
      plot(cars)
    })
  }
  runApp(app)
}

所以我需要的是当用户单击第一个应用程序中的按钮时切换到第二个应用程序。有任何想法吗?


我面临着同样的问题。这是我的解决方案。它需要使用更大且独立的应用程序进行测试,但它听起来回答了您的问题。

我添加了一个选择器应用程序(名为appRoute,但实际上路由功能是通过无限循环来保证的)。每个应用程序都需要有一个退出按钮。应用程序通过返回/停止代码(闪亮的 stopApp 函数)进行通信。闪亮的打印功能正在调用闪亮的runApp功能。

通过将附加按钮链接到特定的 stopApp,应该可以在应用程序之间切换(无需返回选择器应用程序)。我不知道是否可以在应用程序之间传输信息(也许使用会话),但我将使用磁盘文件来实现这一点。

如果您找到更好的解决方案,请告诉我。

library(shiny)
library(shinyjs)

# The tab need to be closed programmatically; here is a quick solution
# https://github.com/daattali/advanced-shiny/blob/master/close-window/app.R
jscode <- "shinyjs.closeWindow = function() { window.close(); }"


# App One
appOne <- list(
  ui = fluidPage(
    useShinyjs(),
    extendShinyjs(text = jscode, functions = c("closeWindow")),
    fluidRow(
      column(3),
      mainPanel(h2("Welcome to the load page"),
                plotOutput("plot"),
                actionButton("quit", "QUIT", class = "btn-warning")))
  ),
  server = function(input, output, session) {
    output$plot <- renderPlot({
      with(cars, hist(dist, breaks = 10))
    })
    observeEvent(input$quit,  { js$closeWindow(); stopApp("appRoute") })
  }
)

# App TWO
appTwo <- list(
  ui = fluidPage(
    useShinyjs(),
    extendShinyjs(text = jscode, functions = c("closeWindow")),
    fluidRow(
      column(3),
      mainPanel(h2("Welcome to appTwo"),
                plotOutput("plot"),
                actionButton("quit", "QUIT", class = "btn-warning")))
  ),
  server = function(input, output, session) {
    output$plot <- renderPlot({
      plot(cars)
    })
    observeEvent(input$quit,  { js$closeWindow(); stopApp("appRoute") })
  }
)

# Router
appRoute <- list(
  ui = fluidPage(
    useShinyjs(),
    extendShinyjs(text = jscode, functions = c("closeWindow")),
    fluidRow(
      column(3),
      mainPanel(h2("Welcome to Selector"), 
                actionButton("appOne", "AppOne"), 
                actionButton("appTwo", "AppTwo"), 
                actionButton("appEnd", "END", class = "btn-danger")
      ))
  ),
  server = function(input, output, session) {
    observeEvent(input$appOne, { js$closeWindow(); stopApp("appOne") })
    observeEvent(input$appTwo, { js$closeWindow(); stopApp("appTwo") })
    observeEvent(input$appEnd, { js$closeWindow(); stopApp("appEnd") })
  }
)

# Main loop
route <- "appRoute"
while (TRUE) {
  app <- switch(
    route,
    appRoute = shinyApp(appRoute$ui, appRoute$server),
    appOne = shinyApp(appOne$ui, appOne$server),
    appTwo = shinyApp(appTwo$ui, appTwo$server),
    appEnd = "END"
  )
  if (is.null(app)) {  # not matched
    warning("Unknown route ", route)
    route <- "appRoute"
    next
  } else if (is.character(app)) {  # final end
    message("Ending")
    break
  }
  # Execute a new app and retrieve return code
  route <- print(app)
  message("New route ", route)
  # browser()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在两个闪亮的应用程序之间切换 的相关文章

  • 如何将管道链 (magrittr) 的结果提供给对象

    这是一个相当简单的问题 但我无法通过 google stackexchange 找到答案并查看 magrittr 的文档 如何提供通过 gt 连接的函数链的结果来创建向量 我看到大多数人做的是 a lt data frame x c 1 3
  • 使用 geom_bar 按列中一个特定值的计数对 y 轴进行排序

    想知道如何通过减少猕猴桃的数量来对 y 轴上的簇进行排序 df data frame df data frame matrix df nrow 200 ncol 2 colnames df lt c cluster name df clus
  • 对列表中的每个数值列表求和

    我想将值附加到 R 中河图中的标签 我有一个值列表列表 需要它来显示节点之间的流 如下所示 edges lt list A list C 10 E 5 B list C 10 C list D 13 E 7 我知道有一个函数可以减少 或求和
  • 使用 RSQLite 在 R 中加载 SQLite 表

    我有这个函数用来加载 SQLite 表 sqLiteConnect lt function database table library DBI library RSQLite con lt dbConnect SQLite dbname
  • R strsplit 问题(容易解决吗?)

    这应该是一件很容易做到的事情 我在这里读到的类似示例有点复杂 而且这些技术对我来说并不真正有效 我有一个名为 id string 的变量 gt typeof id string 1 character and gt id string 1
  • 在 ggplot2 中,如何将堆叠直方图中的小值条形组合在一起?

    示例数据 tmp df lt data frame a rnorm 100 0 1 b rnorm 100 0 5 1 c rnorm 100 0 5 1 d rnorm 100 1 1 e rnorm 100 1 1 gt tidyr g
  • 如何在 sqlSave() 命令中跳过主键?

    我正在尝试使用 RODBC 在 MySQL 数据库中插入 data frame 我正在使用的命令如下 sqlSave channel dbData tablename table name append TRUE safer TRUE fa
  • 在 for 循环中绘制的多个 ggplot2 绘图的网格

    作为一个新的 ggplot2 用户 我对可能性的数量感到有点迷失 并且很难在网上找到我认为简单问题的简单答案 我想在同一张纸上显示 ggplot2 的多个图 但知道这些图来自 for 循环 以下示例无法编译 仅用于说明 for i in c
  • 如何从 data.frame 中选择行和列的子集

    我有这个 d d Age gt 2 它返回 Age 超过 2 的所有行 但我只想返回几列中的值 例如 d X 和 d Y 而不是全部 无论如何我可以做到这一点吗 Thanks d d Age gt 2 c X Y
  • 在 R 中读取 Stata 13 文件

    有没有办法在 R 中读取 Stata 版本 13 数据集文件 我尝试执行以下操作 gt library foreign gt data read dta TEAdataSTATA dta 但是 我收到一个错误 read dta TEAdat
  • R - 根据另一个数据框查找每组的重叠日期

    我有一个数据框 其中包含多个雨量计的降雨测量值 如下例所示 gt rnfl ID date value 1 250 2000 03 01 5 37 2 250 2000 03 02 0 00 3 250 2000 03 03 2 94 4
  • 包检查时如何有效处理未压缩的保存?

    在最近开发一个包的过程中 我将数据集包含在data 我的包的文件夹 在我的具体情况下 我有 5 个数据集 所有这些数据集都位于data table格式 尽管我在下面描述的问题仍然存在 如果我将它们保留为data frame 我已将每个人单独
  • 正则表达式挑选括号之间的一些文本[重复]

    这个问题在这里已经有答案了 可能的重复 提取 R 中所有括号内的信息 正则表达式 https stackoverflow com questions 8613237 extract info inside all parenthesis i
  • udunits2 R 安装:找不到 udunits2.h

    我正在尝试在 R 中安装 udunits2 以满足对ggforce包裹 但是 安装程序在检查 udunits2 时始终失败 我已经尝试过中的说明this https stackoverflow com questions 47059517
  • Dplyr 多重滞后整齐评估?

    我试图在 dplyr 中使用尽可能少的代码来实现多个滞后 同时坚持整洁的评估 以下标准评估 SE 代码有效 if require dplyr install packages dplyr library dplyr a as tibble
  • 将文本添加到 ggplot 中的轴标签

    我从下表中绘制了一个图表 BoatPhs fit se lower upper 1 Before 3 685875 0 3287521 3 038621 4 333130 2 After0 20NTA 3 317189 0 6254079
  • r Shiny 中的 fileInput 函数没有响应

    我是 R 和 R闪亮的新手 一直致力于构建一个统计应用程序 该应用程序将允许用户导入文件 然后对数据运行不同的统计程序 直到最近 fileData 函数一直对我来说运行良好 现在每当我尝试上传文件时 都不会打开任何内容 我已尝试了所有我能想
  • mclapply 用户时间大于已用时间

    我正在尝试使用mclapply的功能parallel封装在R 该函数通过计算对数似然距离将值分配给序列矩阵 这是一个 CPU 密集型操作 所结果的system time价值观令人困惑 gt system time mclapply work
  • 解释 survreg 中的威布尔参数

    我正在尝试使用从 R 中的 survreg 估计的参数生成逆威布尔分布 我的意思是 对于给定的概率 这将是在 MS Excel 中实现的小型模拟模型中的随机数 返回使用我的参数预计出现故障 的时间 我理解逆威布尔分布的一般形式是 X b l
  • 通过 RSelenium 单击按钮

    我正在尝试使用 Rselarium 和 Rvest 来抓取 REI 的评论 吊床 我想点击底部的按钮 x 次 这样我就可以抓取所有评论 我有点失落 这是我到目前为止所拥有的 如果您也知道如何在取景器中预览您正在做的事情 而不是屏幕打印 那就

随机推荐

  • 如何获取列表视图位置?

    我在 Listview onListItemClick 方法中遇到问题 我没有得到列表的位置 这是我的代码请帮助我 求职信选择 xml
  • Angular:用逗号格式化数字

    标题非常概括了我的需求 123456789 gt 123 456 789 12345 gt 12 345 获得这种转化的最佳方法是什么 不要建议在 Angular 2 中使用货币管道 因为我不需要在输出前添加 或货币符号 像这样使用 Dec
  • 将某些日期替换为 NA

    我正在尝试用 NA 替换某些日期 我尝试了以下方法 但没有成功 df lt data frame dates seq Date as Date 1910 01 01 as Date 1999 01 01 days gt mutate if
  • Maven Release-plugin“标签已存在”对于不存在的标签

    我的设置 git 存储库在Atlassian Stash 服务器和Atlassian Bamboo 我在用着Maven 3 1 1与release plugin 2 3 2 该计划在Bamboo看起来像这样 退房自git 存储库 执行一个c
  • 在Android中设置Crouton消息的持续时间

    我已经开始使用 Crouton 消息而不是 toast 消息 因为我可以配置持续时间 有什么方法可以继续显示油煎面包块消息 直到发生特定事件 而不是以明确的单位指定时间 您可以将油煎面包块的持续时间设置为INFINITE从内部Configu
  • 如何从 C# Web 服务生成 WSDL 文件

    我创建了一个像这样的WebService WebService Namespace http ns WebServiceBinding ConformsTo WsiProfiles BasicProfile1 1 public class
  • 当应用程序处于后台时,活动在“最近”中不可见

    问题描述 在我的一个应用程序中 我看到了相当奇怪的行为 当我的应用程序在前台运行 最顶层的应用程序 时 我可以在系统的 最近 中看到其活动 但一旦我将其置于后台 相同的活动 即AccountsActivity 刚才列出的内容不再出现在 最近
  • 解组非根元素时的 JAXB 模式验证

    当您使用 JAXB 解组整个 XML 时 您可以设置 XML 模式以在解析期间启用验证 javax xml validation Schema schema jaxbUnmarshaller JAXBContext newInstance
  • 逐行读取并存储在结构体数组中

    我正在尝试从文本文件中逐行读取行并将其存储在数组中 txt 文件中有一些问题将询问玩家 下面是一些问题 1 N r kom potatisen till Europa A 1300 talet B 1500 talet C 900 tale
  • 禁用 Maven 内部版本号插件

    目前我们正在开发一个大型 Maven 项目 该项目有大约 100 个模块 其中一些还有子模块 一些模块使用 Maven Build Number 插件 该项目是在 Subversion 下托管的 最近我们的开发团队开始在本地使用 git 克
  • 使用 firebase 作业调度程序安排重复作业

    我试图每 10 分钟将 Android 设备的位置发布到服务器一次 我正在使用 firebase 作业调度程序来执行此操作 FirebaseJobDispatcher dispatcher new FirebaseJobDispatcher
  • 仅针对单个模式生成流畅的代码

    有没有办法让 Slick 的代码生成仅为单个模式生成代码 你说 公开 我有一些扩展可以创建大量的表 例如 postgis pg jobman 从而使 slick 生成的代码变得巨大 将此代码与适当的值和模式名称一起使用 object Cod
  • 如何在eclipse中缩进jsp页面

    刚开始使用 jsp 我的页面看起来很糟糕 请建议一种缩进的方法 thanks 首先确保您安装了 Web Tools 如果没有 请检查此链接 http download eclipse org webtools updates http do
  • 提升 Asio 单线程性能

    我正在实现需要维护大量 100K 或更多 长期连接的自定义服务器 服务器只是在套接字之间传递消息 并且不进行任何认真的数据处理 消息很小 但每秒都会接收 发送许多消息 减少延迟是目标之一 我意识到使用多核不会提高性能 因此我决定通过调用在单
  • Python 中的自定义错误消息

    所以我正在练习一些单元测试 我有一个关于错误消息的问题 我正在尝试创建一条自定义错误消息 该消息将在测试失败时显示 这是一个基本的 Hello World 程序 测试运行良好 一切正常 但这是我收到的错误消息 F FAIL test Str
  • ADO.NET 数据表约束如何影响性能?

    DataTable 上的约束 例如主键和唯一约束 是否可以像在 SQL Server 中一样使 Select 更高效 或者他们的唯一目的是对数据执行规则 myDT Constraints Add PK myDT Columns Unique
  • 即使链接具有定义的库后,也会出现“未定义的函数引用”问题

    我正在尝试使用 o so a 文件创建可执行文件 这是我的构建命令 pkgs gcc v4 8 3 bin gcc L usr X11R6 lib O2 DUSE FLEX Wall Wno char subscripts fPIC DLI
  • Visual Studio 调试器在内联代码中速度变慢

    自从我从 vs2005 升级到 Visual Studio 2008 以来 我在调试大型项目时发现了一个非常烦人的行为 如果我尝试单步执行内联代码 调试器似乎会锁定数十秒 每次我进入这样的函数时 都会出现类似的停顿 有没有人经历过这种情况并
  • Groovy 命名参数会导致参数分配发生切换——有什么办法可以解决这个问题吗?

    Groovy 会将所有命名参数收集到一个映射中 并将其作为第一个参数传递到方法中 这看起来很简洁 但是在尝试让它工作之后 它似乎真的无法使用 所以问题是这样的方法 def method paramMap specificVar1 7 spe
  • 在两个闪亮的应用程序之间切换

    所以我有两个独立的onefileshinyApps 带有 UI 和服务器 位于一个函数内 现在我需要做的是在第一个应用程序中调用第二个应用程序 这是一个简单的示例 功能被简化以显示我想要实现的功能 appOne lt function ap