如何从闪亮的callModule函数返回输入值

2024-02-05

我目前正在尝试根据以下内容模块化我的闪亮应用程序本教程 http://shiny.rstudio.com/articles/modules.html。在我的实际应用程序中,我有两个selectInput允许用户选择第一个和最后一个季度结束日期,根据该日期计算某些数据集的一些统计数据。由于可用的季度末日期取决于实际数据集,并且正在使用不同的数据集,因此我提供了choices的参数selectInput动态地在服务器功能中。流程如下:

  1. 创建selectInput对象动态地以数据集的可用季度结束日期为条件。
  2. 使用选定的季末日期来相应地限制特定数据集。

我在我的应用程序中针对不同的数据集一遍又一遍地执行此操作,这就是我现在想要创建一个模块的原因。然而,我很难获取选定的季度末日期,然后我可以用它来限制我的数据集。

下面,请找到一个小应用程序来说明我的问题。

应用程序R部分

source("module.R")

ui <- fixedPage(
  selectQuartersUI("test"),
  textOutput("summary")
)

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

  ### Here I want to save the selected input
  #(Use 1:10 for illustration purposes, this would actually be 
  #quarter end-dates that are dynamic based on the specific data set)
  testValues <- callModule(selectQuarters, "test", 1:10) 

  ### Use the selected input (here to simply output them, in actual app to limit data set)
  #Using testValues returns long function call, calling testValues() returns "Error: could not find function "testValues""
  output$summary <- renderText({
    sprintf(paste0("Start: ", testValues(), collapse = "_"))
  })
}

shinyApp(ui, server)

模块.R部分

selectQuartersUI <- function(id) {

  ns <- NS(id)

  fluidRow(
    column(3, htmlOutput(ns("startQuarter"))),
    column(3, htmlOutput(ns("endQuarter")))
  )

}

selectQuarters <- function(input, output, session, vec_dates) {

  vec_dates <- sort(unique(vec_dates))

  output$startQuarter <-  renderUI({
    ns <- session$ns
    selectInput(ns("startQuarter"), "Start:", vec_dates[1:(length(vec_dates)-1)],
                multiple = FALSE,
                selected =  max(vec_dates[1:(length(vec_dates)-1)])) 
  })

  output$endQuarter  <- renderUI({
    ns <- session$ns #See "Using renderUI within modules" part in tutorial
    selectInput(ns("endQuarter"), "End:", vec_dates,
                multiple = FALSE,
                selected =  max(vec_dates)) #3nd latest quarter
  })

  #See tutorial: "If a module wants to return reactive expressions to the calling app, 
  #               then return a list of reactive expressions from the function
  # Using c() instead causes the same issues
  return(list(reactive({input$startQuarter}), 
              reactive({input$endQuarter})))

}

失败的部分是返回所选的季度末日期testValues,但我很难理解为什么。


您的代码非常接近正确。

您唯一需要意识到的是,您从模块返回的是一个列表,而不是反应值。因此,您无法像无功值一样访问它。但您可以访问其各个元素,例如反应值。

所以虽然testValues()会导致错误,testValues[[1]]() and testValues[[2]]()会给你你想要的两个值。

闪亮的应用程序代码表明它确实如此简单:

ui <- fixedPage(
  selectQuartersUI("test"),
  textOutput("summary")
)

server <- function(input, output, session) {
  testValues <- callModule(selectQuarters, "test", 1:10) 
  output$summary <- renderText({
    sprintf(paste0("Start: ", testValues[[1]](), " end: ", testValues[[2]]()))
  })
}

shinyApp(ui, server)

更好的是,您可以返回一个命名列表(并作为反应值访问各个元素)。在模块内部,将return语句修改为

return(list(start = reactive({input$startQuarter}), 
            end   = reactive({input$endQuarter})))

然后应用程序代码变成

ui <- fixedPage(
  selectQuartersUI("test"),
  textOutput("summary")
)

server <- function(input, output, session) {
  testValues <- callModule(selectQuarters, "test", 1:10) 
  output$summary <- renderText({
    sprintf(paste0("Start: ", testValues$start(), " end: ", testValues$end()))
  })
}

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

如何从闪亮的callModule函数返回输入值 的相关文章

  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 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
  • 如何更改 Shiny 中 navbarPage 折叠的断点

    我想用shiny navbarPage collapsible TRUE 当在小屏幕上查看我的 Shiny 应用程序时 将导航元素折叠到菜单中 默认情况下 当浏览器宽度小于 940 像素时会触发折叠 有什么方法可以改变这一点 以便在稍大的浏
  • 逻辑回归/二项式的 glmnet 误差

    当尝试将 glmnet 与 family binomial 配合以进行逻辑回归拟合时 出现此错误 gt data lt read csv DAFMM HE16 matrix csv header F gt x lt as data fram
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • glmnet 未从 cv.glmnet 收敛 lambda.min

    我跑了20倍cv glmnet套索模型以获得 lambda 的 最佳 值 但是 当我尝试重现结果时glmnet 我收到一个错误 内容如下 Warning messages 1 from glmnet Fortran code error c
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace
  • 为什么 \K 似乎消耗了基本 R 的 gsub 中的一个字符

    这是一个示例字符串 bcadefgh 我希望我能匹配除了 cad 具有以下模式 wa w K w 如果我想替换所有不是的东西 cad 我可以用gsub 像这样gsub wa w K w bcadefgh perl TRUE 但是这输出 ca
  • 如何在我自己的网络服务器上导出并托管 ggvis 图表?

    据我了解 ggvis 运行在闪亮的之上 但我不知道如何在没有 R shiny 的情况下导出在网络服务器上运行单个 ggvis 图表所需的所有文件 这对于交互式绘图来说是不可能的 因为 每个交互式 ggvis 图都必须连接到正在运行的 R 会
  • r 谷歌搜索结果计数检索[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 用关键字 健康医院 搜索谷歌会返回大约 1 150 000 000 个结果 如何在 R 中以编程方式获得此计数 我见过这个lin ht
  • 如何动态访问数据帧列表中的特定属性

    我有一个数据 它是数据框的列表 我正在尝试访问列表中每个数据帧内的特定属性 可以提取特定属性DP UniqueId使用下面的代码 gt attr new data A AA SpotfireColumnMetaData DP UniqueI
  • ggplot2 可视化/显示中的地图错误?

    正如您在下面看到的 我使用 ggplots 制作的地图上存在一个奇怪的显示问题 任何投影似乎都会发生同样的问题 这是代码 仅包maps and ggplot2需要 mapWorld lt borders world colour gray5
  • 使用 R 交互式更改 Plotly 图像中的轴刻度(线性/对数)

    Goal 创建交互式下拉菜单 按钮来更新 R 中 Plotly 图形的轴比例 Issue 有很多关于创建的文档buttons https plot ly r custom buttons and 对数图 https plot ly r lo

随机推荐

  • Android 中的多个 HTTP 连接(分段/群下载)下载同一文件

    我目前正在为 Android 创建一个下载管理器 为了优化下载 我需要使用与服务器的多个连接来下载相同的文件 即 与 Windows 中的 Internet 下载管理器中使用的技术相同 问题是我不知道如何创建多个 HTTP 连接并下载相同的
  • 如何设计响应的打字稿模型?

    如何在得到以下响应的打字稿中设计我的模型 data name XYZ id 1 name Abc id 2 我尝试了什么 export class responseModel
  • 自引用 has_many :through 和自定义 :primary key 问题

    我正在尝试在 Rails 2 3 8 应用程序 ruby 1 8 7 中模拟 twitter 模型 class Connection lt ActiveRecord Base belongs to subject foreign key g
  • 以一种形式上传多个文件 MVC4

    我正在尝试在一张表单上上传多张图片 using Html BeginForm Create AdminRestaurants FormMethod Post new enctype multipart form data div class
  • 为什么 CSS 填充会增加元素的大小?

    我试图给我的 div 和 textarea 一些填充 当我这样做时 它会增加元素的大小 而不是缩小元素内部的内容区域 有什么办法可以实现我想做的事情吗 你可以添加box sizing border box到容器元素 以便能够指定在向元素添加
  • Linux中访问另一个进程虚拟内存(调试)

    Linux上gdb如何访问另一个进程的虚拟内存 都是通过 proc完成的吗 Linux上gdb如何访问另一个进程的虚拟内存 都是通过 proc完成的吗 在Linux上读取内存 1 如果要读取的字节数小于3 sizeof long 或文件系统
  • Scala中递归删除目录

    我正在编写以下内容 使用 Scala 2 10 和 Java 6 import java io def delete file File if file isDirectory Option file listFiles map toLis
  • 在某些设备上,两个活动之间的拖放功能不起作用

    我使用以下代码将视图从应用程序中的一个活动拖动到另一个活动 知道拖动开始时第二个活动 接收放置事件 未创建 活动 它适用于 三星 Note 3 Android 5 API 21 三星 Note 4 Android 6 0 1 API 23
  • 从我的应用程序捕获 iPhone 屏幕并录制视频

    我只是好奇创建一个应用程序来录制 iPhone 屏幕视频或捕获 iPhone 屏幕图像 我知道苹果不允许应用程序商店上架此类应用程序 而且我无意这样做 我可以将我的应用程序上传到Cydia如果我愿意的话 但我目前的目标只是开发一个具有捕获
  • 单核处理器上的单线程与多线程编程

    有人可以解释一下编写在单核处理器上运行的多线程代码是否真的有任何优势吗 例如 一种处理文档页面的方法 使得页面与上述代码段是互斥的 乍一看 这似乎没有优势 因为真正的多线程是不可能的 也就是说 操作系统无论如何都必须对线程进行上下文切换 我
  • 下拉列表选定值

    我已经使用 Web 服务创建了国家 地区的下拉列表 并且尝试将下拉列表选择添加到 sql 数据库中 但是当我在插入语句中使用 ddlCountry SelectedValue 执行此操作时 只有下拉列表中的第一个值是出现在表中 我应该使用
  • 语音合成器“输入字符串的格式不正确”

    这是我的代码 string message Hello world SpeechSynthesizer synth new SpeechSynthesizer Prompt prompt new Prompt message synth S
  • IE9奇怪的表格问题

    大家好 我想知道是否有人可以提供帮助 因为我一片空白 我有一个使用 css 设计的表格 除了 IE9 甚至其他 ie 版本 之外 它在所有浏览器中都呈现良好 我不知道为什么 我什至尝试删除所有 css 但它仍然发生 有什么想法吗 Examp
  • VirtualDocumentRoot 域和子域

    普通域和子域是否可以有 VirtualDocumentRoot http www example com or http example com Uses var www example com And http example com U
  • UI 自动化 - #32770(对话框)在 Insepct.exe 中显示,但不在 VisualUIAVerifyNative.exe 中显示

    我正在尝试使用 UI Automation C API 自动化子窗口 ClassName 的对话框为 32770 目标子窗口显示在Spy and 检查程序 但不显示在VisualUIAVerifyNative 它也无法通过 Automati
  • 在其参数结构上重载 C/C++ 预处理器宏

    我想编写一个预处理器宏 如果它的参数是带括号的标记元组 它会做一件事 如下所示 MY MACRO x y 如果它只是一个令牌 还有其他东西 如下所示 MY MACRO x 那可能吗 如何区分空格分隔的标记的数量 即MY MACRO x an
  • Android 模块与风味之间的区别

    android模块和风格之间的主要区别是什么 来自模块定义https developer android com studio projects add app module html https developer android com
  • 使用缩放图块最大化矩形区域覆盖范围的算法

    I have N需要放置在固定大小的矩形表面 工具箱 内的可扩展方形图块 按钮 我想以相同的尺寸呈现所有按钮 我怎样才能解决瓷砖的最佳尺寸 以提供被瓷砖覆盖的矩形表面的最大面积 Let W and H是矩形的宽度和高度 Let s是正方形的
  • BeautifulSoup HTML 获取 src 链接

    我正在使用 python 3 5 1 和 requests 模块制作一个小型网络爬虫 该模块从特定网站下载所有漫画 我正在尝试一个页面 我使用 BeautifulSoup4 解析页面 如下所示 import webbrowser impor
  • 如何从闪亮的callModule函数返回输入值

    我目前正在尝试根据以下内容模块化我的闪亮应用程序本教程 http shiny rstudio com articles modules html 在我的实际应用程序中 我有两个selectInput允许用户选择第一个和最后一个季度结束日期