【发布时间】:2021-04-18 01:34:53
【问题描述】:
我是 Shiny 的新手,我需要你的知识。我将尝试详细解释:
在我的应用程序中,用户上传了一个 csv 文件。此信息在 2 tabPanel 中可视化。在名为 Original 的第一个 tabPanel 中,用户可以看到原始数据集。另一个名为 Procesado,用户可以看到一个选择输入,其值从 1 到 4,并且只有 2 列(在内部显示信息之前,数据集被编辑,删除了列和行)。
每次用户更改选择输入中的值时,我都想更新第一列的值。我尝试使用 renderUI 和响应式,但不工作。谢谢
shinyUI(
pageWithSidebar(
headerPanel("Ciclismo - Calidad de la sesion"),
sidebarPanel(
p("Escoge el dataset generado por la aplicacion de ciclismo Polar"),
fileInput("file1","Escoge un archivo CSV",
multiple = FALSE,
accept = c(".csv")),
tags$hr(),
submitButton("Evaluar Dataset")
),
mainPanel(
tabsetPanel(
tabPanel("Original", tableOutput("contents")),
tabPanel("Procesado",
p("Selecciona la zona de entrenamiento a evaluar"),
selectInput("zone", "Zona de entrenamiento",
choices = c("1", "2", "3", "4")),
uiOutput("ui"),
tags$hr(),
tableOutput("modified"),),
tabPanel("Graficos",
h3(textOutput("output_text")),
plotOutput("output_plot")
)
)
)
)
)
服务器上的代码是
shinyServer(function(input, output) {
output$contents <- renderTable({
#data.frame(x=auto)
req(input$file1)
# when reading semicolon separated files,
# having a comma separator causes `read.csv` to error
#tryCatch(
#{
df <- read.csv(input$file1$datapath)
#},
#error = function(e) {
# return a safeError if a parsing error occurs
# stop(safeError(e))
# }
#)
return(df)
})
output$ui <- renderUI({
switch(input$zone,
"1" = cbind(ZONA = 1, dfProc),
"2" = cbind(ZONA = 2, dfProc),
"3" = cbind(ZONA = 3, dfProc),
"4" = cbind(ZONA = 4, dfProc))
})
output$modified <- renderTable({
req(input$file1)
dff <- read.csv(input$file1$datapath)
#return(df)
dfN = dff[-c(1,2,3),-c(1,2)]
FC = dfN[,-c(2:26)]
#Se convierte en dataframe para realizar operaciones
dfProc = data.frame(FC)
newdata_test = cbind(ZONA = 1,dfProc)
return(newdata_test)
})
})
【问题讨论】:
标签: shiny-reactivity