In the below example R Shiny code, there are two types of input matrixes. The first (rendered at the top in the sidebar panel and generated by function matInputBase()) captures user input variables "Y" and applies them over a time window "W". This top matrix is then split into 2 expandable matrixes (generated by function matInputFlex()), where the user can optionally change variables Y at times "X". I stripped out all the calculations code and leave only the user input matrixes. User input matrixes are generated by package shinyMatrix.
How do I capture as a reactive object these two matrixes generated by matInputFlex(), and for the sake of example, render them in the main panel as a table?
I need to capture that object for download/upload functionality, as well as to make subsequent calculations easier. The data is meant to flow from matInputBase() to matInputFlex() to this to-be-built reactive object that I would like to play around with. Flow is downstream, whereby inputs into matInputBase() flow to matInputFlex(), but they never flow from matInputFlex() to matInputBase(). The below illustration helps explain.
Code:
library(shiny)
library(shinyMatrix)
matInputBase <- function(name){
matrixInput(name,
value = matrix(c(0.2), 2, 1, dimnames = list(c("Var_1","Var_2"),NULL)),
rows = list(extend = FALSE, names = TRUE),
cols = list(extend = FALSE, names = FALSE, editableNames = FALSE),
class = "numeric")
}
matInputFlex <- function(name, x, y) {
matrixInput(name,
value = matrix(c(x, y), 1, 2, dimnames = list(NULL, c("X", "Y"))),
rows = list(extend = TRUE, names = FALSE),
cols = list(extend = TRUE, delta = 0, names = TRUE, editableNames = FALSE),
class = "numeric")
}
ui <- fluidPage(
sidebarPanel(
sliderInput('periods', 'Time window (W):', min = 1, max = 20, value = 20),
h5(strong("Var (Y) over time window:")),
matInputBase("base_input"),
actionButton('resetVectorBtn', 'Reset'),
uiOutput("Vectors")
),
mainPanel(h5("Show the 2 adjustable matrixes here as DF...")) # show new object that copies adjustable
)
server <- function(input, output, session) {
periods <- reactive(input$periods)
base_input <- reactive(input$base_input)
output$Vectors <- renderUI({
input$resetVectorBtn
tagList(
h5(strong("Adjust Var_1 (Y) at time X:")),
matInputFlex("var_1_vector_input", input$periods, input$base_input[1, 1]),
h5(strong("Adjust Var_2 (Y) at time X:")),
matInputFlex("var_2_vector_input", input$periods, input$base_input[2, 1])
)
})
}
shinyApp(ui, server)

You can just add the relevant table outputs in your UI:
And then in your server function update those when the input changes. As noted in the comment by Limey, the docs state:
Full app code