【发布时间】:2019-03-26 01:29:22
【问题描述】:
我使用 Shiny 包在 R 中编写了一些代码。从 RStudio 运行 shiny::runApp() 时,应用运行正常。
我尝试将应用程序托管在 Shiny 服务器上,并且 GUI 可以正确启动。但是,当单击“Enviar 信息”按钮时,右侧应该会出现一个图。 (您可以看到应用程序的外观 here,但它不起作用,因为该链接不在 Shiny 服务器上,而是在 Shinyapps.io 上)。
日志文件的相关部分如下:
Listening on http://127.0.0.1:38327
Loading required package: Rcpp
Warning: Error in [: subscript out of bounds
211: FUN [/srv/shiny-server/spike_sorting/server.R#82]
210: apply
209: cluster_som_h [/srv/shiny-server/spike_sorting/server.R#82]
...
所以错误在函数cluster_som_h 内部。在尝试了一些东西之后,我发现了导致错误的原因,但不知道如何解决它。在这个函数中,我使用了来自package Rsomoclu 的函数Rsomoclu.train() 和kernelType = 1。这意味着该函数在 GPU 上运行。如果我设置kernelType = 0,那么该应用程序在runApp() 和Shiny 服务器上都可以正常工作。 这就是问题所在:由于某种原因,如果应用程序从 Shiny 服务器运行,则在 GPU 上运行该函数不起作用,但如果它是使用 runApp() 从 RStudio 运行的,则它确实有效。强>
可能发生了一些事情,因为我的计算机上安装了 CUDA,但是当我尝试从服务器运行它时,发生了一些事情。有没有办法来解决这个问题?我相信无论应用程序在 LAN 的哪个位置运行,从这台特定的计算机运行代码都可以解决这个问题。这可能吗?
【问题讨论】:
-
我猜是
algorithm_output <<- cluster_som_h(size, epochs, path)。将它放在它自己的reactive对象中,而不是使用超级赋值运算符。 -
@Phil 如果这是问题所在,那么在执行
runApp()时它是否有意义?我的意思是:如果这是问题所在,runApp()方法不会也失败吗? -
如果没有经过全面测试,我很难回答,但由于本地机器和服务器之间的环境不同,它可以工作。我建议将
algorithm_output更改为响应式对象,看看它是否能解决问题。请记住在调用algorithm_output时始终添加()。 -
@Phil 我尝试在
cluster_som_h中编写一些简单的代码,而不是实际代码,并且错误消失了。因此,该特定功能一定有问题。我仍然不明白为什么runApp()方法有效而服务器却没有。明天我会尝试更多的东西并更新问题。 -
根据您的错误消息,错误来自 cluster_som_h 函数,因此它肯定是相关的。