2016-02-08 34 views
7

Czy można wybrać wiele wartości za pomocą ciągów automatycznych zakończonych, podobnie jak wyszukiwanie google i wybór znaczników przepełnienia stosu w błyszczącym polu tekstowym.Automatyczne uzupełnianie i zaznaczanie wielu wartości w polu tekstowym błyszczące

dataset<-cbind("John Doe","Ash","Ajay sharma","Ken Chong","Will Smith","Neo"....etc) 

Chcę zaznaczyć kilka zmiennych z powyższego zestawu danych jako auto wypełnić mój tekstowego i przekazać ją do mojego server.R

ui.R

shinyUI(fluidPage(
    titlePanel("test"), 

    sidebarLayout(
    sidebarPanel(
     helpText("text"), 

     textInput("txt","Enter the text",""), 
     #Pass the dataset here for auto complete 

    ), 

    mainPanel(
     tabsetPanel(type="tab",tabPanel("Summary"),textOutput("text2")) 

    ) 
) 
)) 

server.R

# server.R 

shinyServer(function(input, output) { 

output$text2<- renderText({ 
paste("hello",input$txt) 

}) 


} 
) 

EDITED

Użyłem select2input od shinysky do wyboru varialbes mulitiple, ale teraz dodałem przycisk submit, aby uzyskać wybrane wartości razem.

#ui.R 
select2Input("txt","This is a multiple select2Input",choices=c("a","b","c"),selected=c("")), 

actionButton("go","submit") 

Chcę powiązać wybraną opcję powiedzmy użytkownik wybrał A i C, wtedy nowa zmienna jest

#server.R 
input$go #if pressed submit button 
var<-cbind("a","c") 
output$text<-renderText({ print ("var")}) 

ale to nie działa

+3

Twoja edycja jest elementarnym pytanie, należy zapoznać się na 'shiny' jak te rzeczy są bardzo proste do zrobienia. Będę edytować moje pytanie ponownie, ale następnym razem post nowe pytanie –

Odpowiedz

11

zajrzeć do shinysky pakietu i textInput.typeahead. Możesz jeszcze bardziej dostosować styl textinput. Edycja: I PRZYKŁAD dodano select2Input pakiecie shinysky także odniesienie

rm(list = ls()) 

library(shinysky) 
library(shiny) 

my_autocomplete_list <- c("John Doe","Ash","Ajay sharma","Ken Chong","Will Smith","Neo") 

ui <- shinyUI(
    fluidPage(tags$style(type="text/css",".shiny-output-error { visibility: hidden; }",".shiny-output-error:before { visibility: hidden; }"), 
      tags$style(type="text/css","#search { top: 50% !important;left: 50% !important;margin-top: -100px !important;margin-left: -250px 
         !important; color: blue;font-size: 20px;font-style: italic;}"),   

      mainPanel( 
       # one way of doing it 
       textInput.typeahead(id="search", 
            placeholder="Type your name please", 
            local=data.frame(name=c(my_autocomplete_list)), 
            valueKey = "name", 
            tokens=c(1:length(my_autocomplete_list)), 
            template = HTML("<p class='repo-language'>{{info}}</p> <p class='repo-name'>{{name}}</p>") 
      ), 
       br(),br(), 
       # using select2Input 
       select2Input("select2Input1","",choices=c(my_autocomplete_list),type = c("input", "select")) 
      ) 
) 
) 

server <- function(input, output, session) {} 
shinyApp(ui = ui, server = server) 

enter image description here

enter image description here

Edycja 2, jak na żądanie. Proszę zawijać swoje obiekty w wyrażeniach reactive jak ja np. var <- reactive({...}) więc można ponownie użyć tych później

rm(list = ls()) 

library(shinysky) 
library(shiny) 

my_autocomplete_list <- c("John Doe","Ash","Ajay sharma","Ken Chong","Will Smith","Neo") 

ui <- shinyUI(
    fluidPage(sidebarPanel(select2Input("txt","",choices=c("a","b","c"),selected=c("")), br(),actionButton("go","submit"), width =2), 
      mainPanel(textOutput('text')) 
) 
) 

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

    var <- reactive({ 
    if(input$go==0){return()} 
    isolate({ 
     input$go 
     cbind("a","c") 
    }) 
    }) 
    output$text <- renderText({var()}) 
} 
shinyApp(ui = ui, server = server) 
+1

hej dzięki za wskazanie shinysky .. W shinysky ta funkcja 'select2Input()' jest bardziej odpowiednia dla mojego kodu .. Jeszcze raz dzięki – Eka

+0

Dodałem dodatkowe wątpliwości do moje pytanie byłoby w stanie mi pomóc – Eka

Powiązane problemy