了解一些背景知识,以便您了解问题/环境:
我正在构建一个复杂的闪亮应用程序。第一步是接受用户输入:它接受可能的选择列表,并根据UI过滤掉设置的大数据。从那里开始,这个本地过滤的数据集需要用它调用一个函数来进行一堆计算,然后返回结果。
这就是我想做的事情:我想在单独的脚本中拥有该应用程序和此功能,因为该功能本身就是超过300行代码。当前它们在单独的脚本中,但是它们尚未链接在一起。
reboot.scss
的光泽结构是:
server
我的函数的结构是:
output$plot <- renderPlot({
# Filter based on UI to result in a data set called d2
# Here I would like to call my function
现在,如果我进入data <- fread("local_path.csv")
my_function <- function(){
# A ton of calculations using data set loaded above
}
# Call to function
my_function()
并调用server
,脚本将与我在脚本中加载的数据一起运行。
我的问题是如何将数据发送到其他脚本?我可以轻松地运行源代码行,然后在闪亮的应用程序中调用该函数,但是如何将过滤后的数据发送到其他脚本?
要记住的另一件事是,在完成这些计算之后,它会生成一个图,如果用户现在想要更改其输入,则应用会允许他们进行输入,然后它会重新过滤数据并不得不再次调用该函数以重新计算一切,以便能够绘制新图。
我知道一个解决方案(虽然不是一个好的解决方案)将是在过滤数据后输出一个csv,然后在我的另一个脚本中设置该文件路径,但是,因为这是一个巨大的数据块(即使进行过滤)这将极大地减慢该过程。
任何想法和帮助都值得赞赏!谢谢!
答案 0 :(得分:0)
如果我的理解正确,当您说“如何将数据发送到另一个脚本”时,是指定义该功能的脚本“其他”-当前以data <- fread(...)
开头的脚本。
答案是您没有将数据从server.R
发送到该脚本;并且也不要从该脚本中调用该函数,只需在该脚本中定义它即可。您应该:
my_function()
的调用d2
参数server.R
的顶部(即,在shinyServer(function(input, output))
之前,调用source(my_function_definition.R)
,这样就可以一次读取原始完整数据集,并且一次定义该函数d2
定义为server.R
中的反应对象(我想您已经在这样做)d2 <- reactive({definition code here; return(d2)})
my_function(d2())
文件中时,调用server.R
,将结果传递给需要这些结果的地方以产生一些输出。函数应该接受输入并返回输出。