gpt4 book ai didi

r - 如何从另一个输出访问变量

转载 作者:行者123 更新时间:2023-12-04 10:54:00 24 4
gpt4 key购买 nike

我目前正在尝试构建我的第一个 Shiny 应用程序并且遇到了一些问题。是否可以从不同的输出对象访问变量?我正在尝试在第一个选项卡中打印表格并在单独的选项卡上显示各个图,如果我可以在一个选项卡上显示所有 3 个,那就更好了。

mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Table", tableOutput("dataTable")),
tabPanel("xy Chart", plotOutput("xyChart")),
tabPanel("yz Chart", plotOutput("yzChart"))
)
)
)
)
)
server <- function(input, output) {

output$dataTable <- renderTable({
x <- rnorm(100, mean = 1)
y <- rnorm(100, mean = 0)
z <- rnorm(100, mean = 0.5)
dataTable <- cbind(x,y,z)
})
output$xyChart <- renderPlot({
plot(x,y)
})

最佳答案

如果您还没有,请查看 shiny教程 available .

而不是将您的数据包含在单个 outputserver 内部,你可以在别处声明这些变量。由于您正在创建 shiny应用程序,您可能有兴趣更改这些变量,并拥有另一个 outputs自动更新。

如果是这样,您可能想要使用 reactiveValues或创建 reactive功能。

下面是一个例子。通过使用 reactiveValues ,当您从中读取一个值(如 x、y 或 z)时,调用表达式对该值进行 react 性依赖(并将随着对其所做的更改而更新)。每当您修改这些值时,它都会通知依赖于该值的所有反应函数。

library(shiny)

ui <- fluidPage(
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Plot", plotOutput("plot")),
tabPanel("Summary", verbatimTextOutput("summary")),
tabPanel("Table", tableOutput("table"))
)
)
)

server <- function(input, output) {

my_data <- reactiveValues(
x = rnorm(100, mean = 1),
y = rnorm(100, mean = 0),
z = rnorm(100, mean = 0.5)
)

output$table <- renderTable({
data.frame(my_data$x, my_data$y, my_data$z)
})

output$plot <- renderPlot({
plot(my_data$x, my_data$y)
})

output$summary <- renderText({
"Summary Goes Here"
})
}

shinyApp(ui = ui, server = server)

如果您希望所有 3 个都在一个面板上(如评论中所述),请将其用于您的 ui :
ui <- fluidPage(
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("All 3",
plotOutput("plot"),
verbatimTextOutput("summary"),
tableOutput("table")
)
)
)
)

如果您想包含您的 input$nRV (如评论中所述),使用 reactive表达式,并将其称为 my_data() :
server <- function(input, output) { 
my_data <- reactive({
a = rnorm(input$nRV, mean = 2)
b = rnorm(input$nRV, mean = 5)
x = rnorm(input$nRV, mean = 3)
y = rnorm(input$nRV, mean = 0)
z = rnorm(input$nRV, mean = 0.5)
data.frame(a, b, x, y, z)
})

output$table <- renderTable({ data.frame(my_data()$x, my_data()$y, my_data()$z)
})

output$plot <- renderPlot({ plot(my_data()$x, my_data()$y) })
}

关于r - 如何从另一个输出访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59326232/

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