मुझे चमकदार में एकाधिक एक्शनबूटन का उपयोग करके कुछ परेशानी हो रही है। मैंने एक टेक्स्टरेरा बनाया है जहां टेक्स्ट डाला जा सकता है। इस पाठ को इस तरह से छेड़छाड़ की जाती है कि तीन तार परिणाम हैं। इन तीन स्ट्रिंग को फिर तीन एक्शनबूटन का लेबल बनाया जाता है। जब बटनों में से एक क्लिक किया जाता है तो उसे इनपुट टेक्स्ट में हेरफेर करना चाहिए।एक्शनबटन रीसेट की आवश्यकता है (या वैकल्पिक)
जब मैं एक्शनबटन पर क्लिक करता हूं तो टेक्स्ट सही तरीके से छेड़छाड़ की जाती है, लेकिन कार्रवाई अनिश्चित रूप से दोहराई जाती है। ऐसा इसलिए है क्योंकि एक्शन बटन रीसेट नहीं किया जा सकता है। मुझे इस समस्या से निपटने वाले कई वेब पेज मिले हैं और मैंने कई समाधान और कामकाज की कोशिश की है, लेकिन कुछ भी काम नहीं करता है। मैं नीचे दिए गए कोड प्रस्तुत किया है:
server.R
library(shiny)
library(stringi)
new_word_f <- function(x) {
x <- substr(x, nchar(x), nchar(x)) == " "
}
modify_text_input <- function(new_word, input_text, word_to_remove, answer) {
if (new_word == TRUE) {
paste(input_text, answer, " ")
} else {
paste(stri_replace_last_regex(input_text, word_to_remove, answer), " ")
}
}
start_input_text <- "Testing the lines "
ngram_input <- "lines"
answer <- c("a", "b", "c")
## Start shiny app
shinyServer(function(input, output) {
## New word or current mid-word
new_word <- reactive({new_word_f(input$text_in)})
output$input_textarea <- renderUI({tags$textarea(id="text_in", rows=3, cols=40, start_input_text)})
output$text1 <- renderText({input$text_in})
output$text2 <- renderText({new_word()})
output$but1 <- renderUI({actionButton("action1", label = answer[1])})
output$but2 <- renderUI({actionButton("action2", label = answer[2])})
output$but3 <- renderUI({actionButton("action3", label = answer[3])})
## On button press
observeEvent(input$action1, {output$input_textarea <- renderUI({tags$textarea(id="text_in", rows=3, cols=40, modify_text_input(new_word(), input$text_in, ngram_input, answer[1]))})})
observeEvent(input$action2, {output$input_textarea <- renderUI({tags$textarea(id="text_in", rows=3, cols=40, modify_text_input(new_word(), input$text_in, ngram_input, answer[2]))})})
observeEvent(input$action3, {output$input_textarea <- renderUI({tags$textarea(id="text_in", rows=3, cols=40, modify_text_input(new_word(), input$text_in, ngram_input, answer[3]))})})
})
ui.R
library(shiny)
library(stringi)
shinyUI(
fluidPage(
titlePanel("Word prediction"),
sidebarLayout(
sidebarPanel(
uiOutput("input_textarea"),
uiOutput("but1"),
uiOutput("but2"),
uiOutput("but3")
),
mainPanel(
textOutput("text1"),
textOutput("text2")
)
)
)
)
यह काम करता है! मैंने 10000 अलग-अलग तरीकों से अलग किया है, लेकिन ऐसा नहीं लगता है .. धन्यवाद! – Maarten