So fragte ich das folgende, R Shiny Dynamic Input, vor ein paar Tagen und obwohl die Antwort richtig ist angesichts der Frage, ich möchte nun einige mehr, da ich nicht in der Lage bin, den Code zu bearbeiten beantworte meine neue Frage. Ursprünglich wollte ich den Benutzer bitten, eine Zahl, sagen wir k, anzugeben, die dann dynamisch k Felder für den Benutzer ausfüllt. Nun nimmt der angegebene Code an, dass die Ausgabe ein numerischer Wert ist. Ich möchte jedoch, dass der Benutzer einen Vektor mit 5 Werten in jedem der Felder 1, ..., k angeben kann. Da nach der Angabe von k die Eingaben k Vektoren mit der Länge 5 von numerischen Werten sein werden, möchte ich in der Lage sein, diese Werte in einer k mal 5 Matrix zu speichern. Auf diese Weise kann ich diese Werte verwenden, um später Datenmanipulationen durchzuführen. Wenn es hilft, hier ist der Code von der ursprünglichen Antwort:Amending dynamischen Eingabe-Code in R Shiny
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Old Faithful Geyser Data"),
sidebarLayout(
sidebarPanel(
numericInput("numInputs", "How many inputs do you want", 4),
# place to hold dynamic inputs
uiOutput("inputGroup")
),
# this is just a demo to show the input values
mainPanel(textOutput("inputValues"))
)
))
# Define server logic required to draw a histogram
server <- shinyServer(function(input, output) {
# observe changes in "numInputs", and create corresponding number of inputs
observeEvent(input$numInputs, {
output$inputGroup = renderUI({
input_list <- lapply(1:input$numInputs, function(i) {
# for each dynamically generated input, give a different name
inputName <- paste("input", i, sep = "")
numericInput(inputName, inputName, 1)
})
do.call(tagList, input_list)
})
})
# this is just a demo to display all the input values
output$inputValues <- renderText({
paste(lapply(1:input$numInputs, function(i) {
inputName <- paste("input", i, sep = "")
input[[inputName]]
}))
})
})
# Run the application
shinyApp(ui = ui, server = server)
bearbeiten
Hier Code aktualisiert wird, die noch nicht vollständig funktioniert:
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Old Faithful Geyser Data"),
sidebarLayout(
sidebarPanel(
numericInput("numInputs", "How many inputs do you want", 4),
# place to hold dynamic inputs
uiOutput("inputGroup")
),
# this is just a demo to show the input values
mainPanel(tableOutput("inputValues"))
)
))
# Define server logic required to draw a histogram
server <- shinyServer(function(input, output) {
# observe changes in "numInputs", and create corresponding number of inputs
observeEvent(input$numInputs, {
output$inputValues <- renderTable({
all <- paste(lapply(1:input$numInputs, function(i) {
inputName <- paste("input", i, sep = "")
input[[inputName]]
}))
matrix <- as.matrix(all, ncol=5)
as.data.frame(matrix)
})
})
# this is just a demo to display all the input values
output$inputValues <- renderText({
paste(lapply(1:input$numInputs, function(i) {
inputName <- paste("input", i, sep = "")
input[[inputName]]
}))
})
})
# Run the application
shinyApp(ui = ui, server = server)
Dank für das Update. Wenn ich den Code ausführe, werden jedoch keine Felder dynamisch gefüllt. – RustyStatistician
Ich habe die Frage mit dem Code aktualisiert. – RustyStatistician
Aktualisiert mit vollständigem Arbeitscode. –