我正在起草一个简单的Shiny App,该应用程序提供对动态图表和相应表格的访问。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})
当我尝试访问表时,出现以下错误消息:
func()中的错误:找不到对象“ chrt_demo_dta”
看来该对象chrt_demo_dta
是在的范围规则之外创建的renderTable
。我的问题是如何实现以下目标:
subset
命令嵌入renderPlot
其中renderTable
我知道代码不是完全可复制的,但是在此阶段,我不一定要寻找一种特定的解决方案,而是要寻求一种更通用的指导,即是否可以从另一个服务器元素访问在一个服务器元素内创建的对象。如果需要加倍努力,我可以将子集机制封装在一个函数中,并调用两次,但这似乎是一个比较麻烦的解决方案。
<<-运算符可能会产生不良后果。它将结果发送到共享环境,该环境对会话的所有用户均可见。这不仅会在他们试图互相覆盖的情况下创造竞争条件,而且可能会将机密工作公开给他人。您有两种解决方案:1)在每个本地环境中重复这些步骤,2)使用唯一名称(例如Sys.time()+数据哈希)将结果写入磁盘。然后,您可以在需要时在其他地方检索它。不过不要忘记删除已保存的文件,否则您的存储空间将被消耗。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句