我现在有一个应用程序,该应用程序接收数据集,然后根据数据中的排名呈现UI。即如果元素A具有重要性等级5,则它在元素B上方列出。我希望能够通过滑动条使用户更改排名,然后在给定更新的排名信息的情况下,按update以重新呈现UI。我不知道这是否可行,但到目前为止尚未实现。这是我的代码的最小示例:
library(shiny)
library(tidyverse)
df <- read_csv("")
df <- cd %>% arrange(desc(Rating))
ui <-
fluidRow(
box(title = "Reranking",
actionButton("refresh", "Update Results"),
uiOutput("sliders"),
width = 12
)
)
server <- function(input, output, session) {
observeEvent(input$refresh, {
rating <- df$Rating
votes <- df$Votes + 1
for(i in nrow(challenge_df)) {
rating[i] <- (rating[i] * votes[i] - 1 + input[[paste0("slider", i)]]) / (df$Votes[i])
}
df <-
df %>%
mutate(
Rating = rating,
Votes = votes
)
df <- df %>% arrange(desc(Rating))
return(uiOutput("sliders"))
})
output$sliders <- renderUI({
slide_vars <- df$A
text_vars <- df$B
val_vars <- df$Rating
splitLayout(cellWidths = c("25%", "36%", "39%"),
sliderInput(inputId = paste0("slider", i),
label = slide_vars[i], min = 1, max = 5, value = val_vars[i]
),
actionButton(paste("tabBut", i, sep = ""), "View Details"),
bsModal(paste("modal", i, sep = ""), title = "Detailed Text", trigger = paste("tabBut", i, sep = ""), size = "small", renderText(df$Details[i]))
)
})
})
}
我的应用程序运行并且UI第一次生成就很好,但是当我更改排名然后点击更新时,它似乎无能为力。任何帮助,将不胜感激。
编辑:
这里是解决我的问题的解决方案的链接,因为显然我无法使用链接来回答自己的问题。非常感谢mod。