Ich habe einige Probleme mit mehreren Aktionstasten in glänzend. Ich habe ein Textfeld erstellt, in das Text eingefügt werden kann. Dieser Text wird so manipuliert, dass drei Strings das Ergebnis sind. Diese drei Saiten werden dann zur Bezeichnung der drei Aktionsknöpfe gemacht. Wenn eine der Schaltflächen angeklickt wird, sollte sie den Eingabetext manipulieren.Actionbutton Reset benötigt (oder alternativ)
Wenn ich auf die actionbutton klicke, wird der Text korrekt bearbeitet, aber die Aktion wird unbestimmt wiederholt. Dies liegt daran, dass die Aktionstaste nicht zurückgesetzt werden kann. Ich habe mehrere Webseiten gefunden, die sich mit diesem Problem beschäftigen, und habe mehrere Lösungen und Workarounds ausprobiert, aber nichts scheint zu funktionieren. Ich habe den Code unten dargestellt:
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")
)
)
)
)
Das funktioniert! Ich habe Isolat auf 10000 verschiedene Weisen angewendet, aber nicht so scheint es .. Danke! – Maarten