gpt4 book ai didi

r - 在 renderPlot 之外的 Shiny 中为 renderTable 提供一个对象

转载 作者:行者123 更新时间:2023-12-04 18:03:45 24 4
gpt4 key购买 nike

我正在起草一个简单的 Shiny 应用程序,它提供对动态图表和相应表格的访问。 server.R 代码的相关部分如下所示:

output$some_plot<- renderPlot({
# Subset data on change in the indicator selection
chrt_demo_dta <- subset(x = dta_la_demo,
subset = <<my-conditions>>>)
# Define the demography chart
ggplot(data = chrt_demo_dta, aes(x = variable_a, y = variable_b)) +
geom_line(aes(colour = GEOGRAPHY_NAME), size = 2) +
theme_bw()}, height = 650, width = 800)

# Section generating table
output$chrt_demo_dta_tbl <- renderTable({chrt_demo_dta})

当我尝试访问表时出现问题,我收到以下错误消息:

Error in func() : object 'chrt_demo_dta' not found

对象 chrt_demo_dta 似乎是在 renderTable 的范围规则之外创建的。我的问题是如何实现以下目标:

  1. 我希望图表和相应的表格根据选择动态更新,因此我的想法是将 subset 命令嵌入到有效的 renderPlot
  2. 我想在相应的表中使用相同的子集。理想情况下,我想避免重复子集命令。由于我已准备好所需的数据框,看来只需通过 renderTable
  3. 访问它即可

我知道代码不能完全重现,但在这个阶段我不一定要寻找特定的解决方案,而是寻找更通用的指导是否可以访问在一个服务器元素中创建的对象 如果到了紧要关头,我可以将子集机制封装在一个函数中并调用它两次,但这似乎是一个相当困惑的解决方案。

最佳答案

server.Rserver函数中:

# Create reactive object w/in server func
chrt_demo_dta <- reactiveVal()

output$some_plot<- renderPlot({
chrt_demo_dta.temp <- subset(
x = dta_la_demo,
subset = <<my-conditions>>>)
# Update the obj within scope of nested function
chrt_demo_dta(chrt_demo_dta.temp)
})

# Access of the updated obj is now possible in original scope
output$chrt_demo_dta_tbl <- renderTable({chrt_demo_dta()})

参见相关:Shiny : How to modify reactive object

关于r - 在 renderPlot 之外的 Shiny 中为 renderTable 提供一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30669886/

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