2017-02-20 22 views
1

Я пытаюсь добавить значение, взятое из ввода (в данном случае input$n) в список (в данном случае переменная «keyword_list»), когда пользователь нажимает действие (в данном случае кнопка input$goButton).Обновление переменной с входными данными

ui.R 
library(shiny) 

pageWithSidebar(
    headerPanel("actionButton test"), 
    sidebarPanel(
    #numericInput("n", "N:", min = 0, max = 100, value = 50), 
    textInput("n", "Caption", "Enter next keyword"), 
    br(), 
    actionButton("goButton", "Go!"), 
    p("Click the button to update the value displayed in the main panel.") 
), 
    mainPanel(
    verbatimTextOutput("nText"), 
    dataTableOutput('mytable') 
) 
) 
}) 

server.R 
library(shiny) 

# Define server logic required to summarize and view the selected 
# dataset 
function(input, output,session) { 

#prepare data 
keyword_list <- matrix() 
makeReactiveBinding('keyword_list') 

observe({ 
    if (input$goButton == 0) 
    return() 

    isolate({ 
    keyword_list <- append(keyword_list,input$n) }) 
}) 

    ntext <- eventReactive(input$goButton, { 
    input$n 
    }) 


    output$nText <- renderPrint({ 
    #input$n 
    ntext() 
    }) 

    output$mytable = renderDataTable({ 
    as.data.frame(keyword_list) 
    }) 


} 

ответ

1

Как об этом:

library(shiny) 

ui <- pageWithSidebar(
    headerPanel("actionButton test"), 
    sidebarPanel(
    #numericInput("n", "N:", min = 0, max = 100, value = 50), 
    textInput("n", "Caption", "Enter next keyword"), 
    br(), 
    actionButton("goButton", "Go!"), 
    p("Click the button to update the value displayed in the main panel.") 
), 
    mainPanel(
    verbatimTextOutput("nText"), 
    dataTableOutput('mytable') 
) 
) 
}) 

library(shiny) 

# Define server logic required to summarize and view the selected 
# dataset 
server <- function(input, output,session) { 

    global <- reactiveValues(keyword_list = "") 

    observe({ 
    if (input$goButton == 0) 
     return() 

    isolate({ 
     global$keyword_list <- append(global$keyword_list, input$n) 
    }) 
    }) 

    ntext <- eventReactive(input$goButton, { 
    input$n 
    }) 


    output$nText <- renderPrint({ 
    #input$n 
    ntext() 
    }) 

    output$mytable = renderDataTable({ 
    as.data.frame(global$keyword_list) 
    }) 
} 

shinyApp(ui, server) 
+0

Я бы с 'reactiveValues' как хорошо, но вместо', если (вход $ goButton == 0) возврата() 'Я хотел бы использовать' REQ (вход $ goButton! = 0) ':) –

+1

Я также не был поклонником этой части, если честно, но предпочитаю менять исходный код как можно меньше, чтобы отвечать только на реальный вопрос. – BigDataScientist

+0

Привет, Оба решения отлично работают! Большое спасибо. Теперь я могу кататься на лыжах с моим умом в покое ;-). Хорошего дня. – Bastian

 Смежные вопросы

  • Нет связанных вопросов^_^