2014-12-19 86 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

相關問題