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