Im Wesentlichen versuche ich zwischen Rhandsontables zu wechseln, die auch externe Widgets haben, die sie manipulieren. Außerdem gibt es in diesen Tabellen zugrunde liegende Formeln. Diese Tabellen sind im Wesentlichen die gleichen und die Widgets und Formeln funktionieren in beiden Fällen gleich, ich möchte nur zwischen ihnen wechseln können. Das folgende Beispiel kann informativ sein ...Shiny: Wechselnde reaktive Datensätze mit Rhandsontable und externen Parametern
library(shiny)
library(rhandsontable)
RepData1 <- data.frame(col1 = c(1:10)
,col2 = "C1"
,col3 = runif(10,0,0.023)
,col4 = runif(10,0,1))
RepData2 <- data.frame(col1 = c(1:10)
,col2 = "C2"
,col3 = runif(10,0,0.023)
,col4 = runif(10,0,1))
ui=fluidPage(
sliderInput("mySlider",label="Slider", min = 0, max = 100, post = " %", value = 50)
,numericInput("Total", "Total:", 500000)
,verbatimTextOutput("value")
,fluidRow(
column(3, radioButtons("Buttn10", label="col", choices= c("C1","C2"), selected = "C1", inline = TRUE))
,column(6,rHandsontableOutput("hotable1"))
)
)
server <- shinyServer(function(input, output, session) {
selData <- ""
previous <- reactive({
if(input$Buttn10 == "C1") {
if(selData == "" | selData == "C2") {
selData <<- "C1"
return(RepData1)
}
} else {
if(selData == "C1") {
selData <<- "C2"
return(RepData2)
}
}
})
MyChanges <- reactive({
if(is.null(input$hotable1)){
return(previous())
} else if(!identical(previous(),input$hotable1)){
mytable <- as.data.frame(hot_to_r(input$hotable1))
x <- input$Total*(input$mySlider/100)
mytable$QTY <- x*mytable$col4
mytable
}
})
output$hotable1 <- renderRHandsontable({
if(is.null(MyChanges())) return()
df_ <- MyChanges()
rhandsontable(df_, readOnly = FALSE, rowHeaders= NULL, useTypes= TRUE) %>%
hot_table(highlightCol = TRUE, highlightRow = TRUE)
})
})
shinyApp(ui,server)
In diesem Fall werden die Widgets und Formeln arbeiten, aber nicht die Schalt ...
I don‘ t verstehst du ganz, was du mit "switching" meinst? –
Ich habe zwei Datenframes im obigen Beispiel, die ich versuche, zwischen den RadioButtons ('C1', 'C2') im UI-Teil zu wechseln. Der Trick, den ich hier versuche, ist, zwischen RepData1 und RepData2 umzuschalten, während ich mit dem Schieberegler und dem gesamten Eingang verbunden bin ... – TesterL3X18999