在下面的例子Rshiny 代码中,有两种类型的输入矩阵.第一个(在侧边栏面板的顶部呈现并由函数matInputBase()
生成)捕获用户输入变量"Y",并在时间窗口"W"上应用它们.然后,该顶部矩阵被分成2个可扩展的矩阵(由函数matInputFlex()
生成),其中用户可以任选地在时间"X"时改变变量Y.我go 掉了所有的计算代码,只留下了用户输入矩阵.用户输入矩阵由包shinyMatrix
生成.
如何将matInputFlex()
生成的这两个矩阵作为react 对象捕获,并在主面板中以表格的形式呈现它们?
我需要捕获该对象以实现下载/上传功能,并使后续计算更容易.数据的流向是从matInputBase()
到matInputFlex()
,这是我想要玩弄的这个即将建造的react 性物体.资金流向下游,即流入matInputBase()
的资金流向matInputFlex()
,但它们永远不会从matInputFlex()
流向matInputBase()
.下面的插图有助于解释.
代码:
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)