通过在R输入中按Enter键为搜索关键字选择多个项目

通过在R输入中按Enter键为搜索关键字选择多个项目,r,shiny,reactive-programming,R,Shiny,Reactive Programming,我试图通过使用输入的搜索关键字并按Enter键为关键字选择所有匹配的项目来选择Shiny的select input中的项目 如果我提供了列表中已经存在的类似于ALL的项,但我希望它对任何键入的关键字都有效,则代码段中的observe函数可以工作。e、 g.App并点击回车键选择所有匹配项 看看是否有其他自定义选项可以使用jquery或其他方法进行编码,以捕获键入的输入和捕获过滤的项,这将是一件有趣的事情。或者可能是某个正则表达式,而不是我在if条件中使用的“ALL” --- 标题:“按Ente

我试图通过使用输入的搜索关键字并按Enter键为关键字选择所有匹配的项目来选择Shiny的select input中的项目

如果我提供了列表中已经存在的类似于
ALL
的项,但我希望它对任何键入的关键字都有效,则代码段中的
observe
函数可以工作。e、 g.
App
并点击回车键选择所有匹配项

看看是否有其他自定义选项可以使用jquery或其他方法进行编码,以捕获键入的输入和捕获过滤的项,这将是一件有趣的事情。或者可能是某个正则表达式,而不是我在
if
条件中使用的
“ALL”

---
标题:“按Enter键搜索并选择多个项目”
输出:
flexdashboard::flex_仪表板:
方向:列
垂直布局:填充
运行时间:闪亮
---
```{r设置,include=FALSE}
库(flexdashboard)
```
列{.sidebar数据宽度=300}
-----------------------------------------------------------------------
```{r}
#####################
###反应参数
参数我找到了有关的帮助。它被超链接在闪亮的页面上

我最终使用了
create
函数使其工作。不得不使用
回调
而不是
返回
。基于搜索字符串的选择显示
未定义
,我无法使其显示正确的选择。但是,由于我有
observe
函数,通过它我将
更新selectinput
,所以我并不担心这一点

下面是我编写的示例代码

    ---
    title: "search and select multiple items by pressing Enter"
    output: 
      flexdashboard::flex_dashboard:
        orientation: columns
        vertical_layout: fill
    runtime: shiny
    ---

    ```{r setup, include=FALSE}
    library(flexdashboard)
    library(dplyr)
    ```

    Column {.sidebar data-width=300}
    -----------------------------------------------------------------------

    ```{r echo=FALSE}
    #####################
    ### Reactive Parameters 

    Parameters <- reactive({
      c("ALL","Apple","App","Application","Approximate","Appointment","Ap_titude","Apricot","B","Ball","Bat","Battery")
    })

    output$params = renderUI({
      selectizeInput(
        'params',
        'Parameters',
        selected = NULL,
        choices = Parameters(),
        multiple = TRUE,
        options = list(
        delimiter= ',',
        persist= FALSE,
        create = I("function(input, callback) {
            callback({
                'value': input,
                'text': input
            });
        }")
        )    
      )
    })

    observe({
      dt <- as.character(unlist(Parameters()))
      if(is.null(input$params)){
        return()
      } else{
          if("ALL" %in% input$params){
            param_selection <- setdiff(dt, "ALL")
          } else {
            param_selection <- dt[grep(paste(input$params, collapse = "|"), dt)]
          }
      }
      updateSelectInput(session, "params", selected = as.character(unlist(param_selection)))
    })


    uiOutput("params")

    ```

    Column
    -----------------------------------------------------------------------

    ### Summary

    ```{r}

    ```
---
标题:“按Enter键搜索并选择多个项目”
输出:
flexdashboard::flex_仪表板:
方向:列
垂直布局:填充
运行时间:闪亮
---
```{r设置,include=FALSE}
库(flexdashboard)
图书馆(dplyr)
```
列{.sidebar数据宽度=300}
-----------------------------------------------------------------------
```{r echo=FALSE}
#####################
###反应参数

参数嗯,尝试这个,我得到了
未定义的
,即使是回调。我想我提到过,我也看到了
未定义的
,但是
观察
函数会注意并更新输入,所以不会持续很长时间。你试过运行我的工作代码吗?嘿,我想出来了,谢谢,但现在它没有添加所有匹配选项。将进行调试并返回报告!
    ---
    title: "search and select multiple items by pressing Enter"
    output: 
      flexdashboard::flex_dashboard:
        orientation: columns
        vertical_layout: fill
    runtime: shiny
    ---

    ```{r setup, include=FALSE}
    library(flexdashboard)
    library(dplyr)
    ```

    Column {.sidebar data-width=300}
    -----------------------------------------------------------------------

    ```{r echo=FALSE}
    #####################
    ### Reactive Parameters 

    Parameters <- reactive({
      c("ALL","Apple","App","Application","Approximate","Appointment","Ap_titude","Apricot","B","Ball","Bat","Battery")
    })

    output$params = renderUI({
      selectizeInput(
        'params',
        'Parameters',
        selected = NULL,
        choices = Parameters(),
        multiple = TRUE,
        options = list(
        delimiter= ',',
        persist= FALSE,
        create = I("function(input, callback) {
            callback({
                'value': input,
                'text': input
            });
        }")
        )    
      )
    })

    observe({
      dt <- as.character(unlist(Parameters()))
      if(is.null(input$params)){
        return()
      } else{
          if("ALL" %in% input$params){
            param_selection <- setdiff(dt, "ALL")
          } else {
            param_selection <- dt[grep(paste(input$params, collapse = "|"), dt)]
          }
      }
      updateSelectInput(session, "params", selected = as.character(unlist(param_selection)))
    })


    uiOutput("params")

    ```

    Column
    -----------------------------------------------------------------------

    ### Summary

    ```{r}

    ```