Ich möchte, dass der App-Benutzer etwas aus der Dropdown-Liste auswählt und dann einen numerischen Wert dafür eingibt, der in einen Datenrahmen übersetzt würde. Wenn dasselbe Element beim n-maligen Klicken auf die Schaltfläche ausgewählt wird, ersetzt es den ursprünglichen Wert. Andernfalls sollte es die neuen Werte in den Datenrahmen einschließen. Ich weiß nicht, warum es auch einen seltsamen Header auf meinem Datenrahmen gibt. Bitte beraten, danke.Bedingtes Cbind für Datenframe in R Shiny
ui <- fluidPage(
selectInput("solvent", "Choose a solvent:",
list(`Solvent` = c("ETOH", "SALINE", "DW5",'CREMOPHOR','WATER','DMSO','2% KLUCEL (pH=4 /w HCl)')
)),
numericInput('vol','Vol solvent (ml)',0),
actionButton('add','Add'),
textOutput("result"),
tableOutput('table')
)
server = function(input, output) {
rv <- reactiveValues()
observeEvent(input$add,{rv$data<-data.frame(c(input$solvent,input$vol)); setNames(rv$data,input$solvent);
if (as.numeric(input$add)>1 & colnames(rv$data) == input$solvent)
{rv$data[1,input$solvent] = input$vol}
else {cbind(rv$data,data.frame(input$solvent,input$vol))}
})
output$table<-renderTable({ rv$data})
output$result <- renderText({
paste("You chose", input$solvent)
})
}
shinyApp(ui, server)
Namen (Datenrahmen) <- NULL – Ars