gpt4 book ai didi

r - 在 R shiny 中,如何在 UI 端使用在服务器端计算的值?

转载 作者:行者123 更新时间:2023-12-05 04:15:23 26 4
gpt4 key购买 nike

在我的 R shiny 应用程序中,我想根据数据框的行数调整我的 d3heatmap(参见包 d3heatmap)的高度; d3heatmapOutput 中有一个参数 height 来指定它。

但是,我的数据框是在服务器端计算的,那么如何将它的行数从服务器端传递到 ui 端呢?

这是反射(reflect)我想做的事情的例子:

runApp(shinyApp(
ui = fluidRow(
selectInput("am", "Automatic (0) or manual (1) transmission?",
choices = c(0,1)),

# How can I have the 'height' argument equal to 'output$height'?
# I cannot use 'textOutput("height")' since it gives html code, not a value.
d3heatmapOutput("heatmap", height = "400px")
),
server = function(input, output) {
mtcars2 = reactive({
mtcars[which(mtcars$am == input$am),]
})
output$height <- renderText({
paste0(15*nrow(mtcars2()), "px")
})
output$heatmap <- renderD3heatmap({
d3heatmap(mtcars2(), scale = "column")
})
}
))

谢谢。

最佳答案

您可以使用 ui.R 中的 uiOutputserver.R 中的 renderUI 来动态添加 d3heatmapOutput:

library(shiny)
library(d3heatmap)
runApp(shinyApp(
ui = fluidRow(
selectInput("am", "Automatic (0) or manual (1) transmission?",
choices = c(0,1)),

uiOutput("ui_heatmap")

),
server = function(input, output) {
mtcars2 = reactive({
mtcars[which(mtcars$am == input$am),]
})
output$ui_heatmap <- renderUI({
d3heatmapOutput("heatmap", height = paste0(15*nrow(mtcars2()), "px"))
})
output$heatmap <- renderD3heatmap({
d3heatmap(mtcars2(), scale = "column")
})

}
))

然后您可以在应用程序的服务器端设置热图的高度。

关于r - 在 R shiny 中,如何在 UI 端使用在服务器端计算的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com