2014-12-19 29 views
1

我在Shiny服务器上有一个闪亮的应用程序,但是如果R不处于交互模式,应用程序中使用的一个软件包会生气。对于我使用的功能,我不需要交互性。让Shiny Server(真正bigrquery)认为R正在交互式运行

我知道在从命令行启动R时,我可以使用--interactive选项。有没有办法将此传递给闪亮的服务器?

谢谢!

编辑 - 具体的问题似乎与bigrquery包。从闪亮的服务器调用query_exec返回错误:interactive() is not TRUE

+2

你可以重新定义'interactive',使其返回TRUE;。 – jdharrison 2014-12-19 00:14:09

+0

嗨@jdharrison。我已经看过了。互动不仅仅是一种选择。通过调用base中的'interactive()'函数来检查交互性。看起来你不能在base中重新定义函数。我可以编写一个本地'interactive()'函数,但问题出在一个包中,所以创建一个本地函数不会影响包。 – 2014-12-19 01:30:04

回答

0

也许有点像在global.R以下,将有助于(注意要注意在?assignInNamespace等免责条款):

interactive <- function(){TRUE} 
unlockBinding(sym="interactive", env=getNamespace("base")); 
assignInNamespace(x="interactive", value=interactive, ns=asNamespace("base"), envir=getNamespace("base")); 
assign("interactive", interactive, envir=getNamespace("base")); 
lockBinding(sym="interactive", env=getNamespace("base")); 
> 
> rm(interactive) 
> interactive 
function(){TRUE} 
> base::interactive 
function(){TRUE} 
+0

谢谢@jdharrson,但不幸的是这不起作用。我不完全确定为什么。但我尝试了相反的实验 - 强制'interactive'变为'FALSE',然后程序包(bigrquery)仍然运行。 如果它有所作为,问题似乎是与httr包,特别是oauth-listener,至少根据这个[在github上的讨论](https://github.com/hadley/bigrquery/issues/28) – 2014-12-19 15:49:24

+0

我又走了一步,试图重写oauth-listener强制交互为FALSE,以查看是否可以在正常的R会话中将其分解,但它工作正常。也许涉及更深层的东西。 – 2014-12-19 16:07:25

相关问题