gpt4 book ai didi

R Shiny 的 gvisTable ,其中用户按定义的顺序选择列

转载 作者:行者123 更新时间:2023-12-03 03:23:50 24 4
gpt4 key购买 nike

我有一个R shiny我目前使用的网页gvisTable显示数据框中选择的列。用户使用 sidebarPanel 动态选择行,但现在列在 gvisTable 调用中进行硬编码。

我想允许用户从下拉菜单中动态选择列(请参阅来自非 Shiny 网页的类似系统的快照)。我想要的关键功能是允许对列重新排序。

enter image description here

有什么想法如何以 Shiny 的方式传递这个排序的列选择吗?

如果它能完成这项工作,我不介意使用其他东西来代替 gvisTable

编辑:感谢您展示使用可排序答案的解决方案。它适用于我的旧版本和新版本的 Shiny 。然而,这似乎不记得点击“刷新”时的顺序,如果有的话那就太好了。

那么,它可以将最后选择的订单保存为浏览器 cookie 或类似的方式吗?服务器已通过身份验证,并且我被告知可以将变量顺序放入以用户 ID 作为 key 的列表中。举个例子就太好了。

最佳答案

在 Shiny 中,您必须使用多个 selectInput。但是,您可以安装 ZJ ( https://github.com/AnalytixWare/ShinySky ) 的 ShinySky 并使用他的 select2 绑定(bind)来进行排序。或者,您可以修改 https://github.com/mostly-harmless/sortable 处的可排序绑定(bind)。 .

编辑:我不了解cookie。我在更大的app中使用sortable 。我有一个操作按钮来保存用户选择的订单。请参见数据 > 转换 > 对列重新排序。在应用程序中,数据存储在reactiveValue中。为了保存数据顺序,我使用 values[[input$datasets]] <- values[[input$datasets]][,input$tr_reorder_cols]哪里input$datasets是事件数据集,input$tr_reorder_cols是用户选择的变量排序,values是包含数据的reactiveValue。

该应用程序的源代码位于 Github 上:https://github.com/mostly-harmless/radiant

作为替代方案,您还可以将变量的顺序保存在reactiveValue 中。请参阅Shiny有关详细信息的文档。

编辑:

在global.R中定义一个reactiveValue:

savedOrder <- reactiveValues()

当用户更改订单时(假设您有 userid 可用作 R 中的变量):

if(!is.null(input$sortable)) {
savedOrder[[userid]] <- input$sortable
}

此外,您可以在刷新时将 id 值传递给 returnOrder:

if(!is.null(savedOrder[[userid]])) {
returnOrder("sortable",savedOrder[[userid]])
} else {
returnOrder("sortable",colnames(dat))
}

关于R Shiny 的 gvisTable ,其中用户按定义的顺序选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21404110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com