我在Shiny服務器上有一個閃亮的應用程序,但是如果R不處於交互模式,應用程序中使用的一個軟件包會生氣。對於我使用的功能,我不需要交互性。讓Shiny Server(真正bigrquery)認爲R正在交互式運行
我知道在從命令行啓動R時,我可以使用--interactive選項。有沒有辦法將此傳遞給閃亮的服務器?
謝謝!
編輯 - 具體的問題似乎與bigrquery包。從閃亮的服務器調用query_exec
返回錯誤:interactive() is not TRUE
。
我在Shiny服務器上有一個閃亮的應用程序,但是如果R不處於交互模式,應用程序中使用的一個軟件包會生氣。對於我使用的功能,我不需要交互性。讓Shiny Server(真正bigrquery)認爲R正在交互式運行
我知道在從命令行啓動R時,我可以使用--interactive選項。有沒有辦法將此傳遞給閃亮的服務器?
謝謝!
編輯 - 具體的問題似乎與bigrquery包。從閃亮的服務器調用query_exec
返回錯誤:interactive() is not TRUE
。
也許有點像在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}
謝謝@jdharrson,但不幸的是這不起作用。我不完全確定爲什麼。但我嘗試了相反的實驗 - 強制'interactive'變爲'FALSE',然後程序包(bigrquery)仍然運行。 如果它有所作爲,問題似乎是與httr包,特別是oauth-listener,至少根據這個[在github上的討論](https://github.com/hadley/bigrquery/issues/28) – 2014-12-19 15:49:24
我又走了一步,試圖重寫oauth-listener強制交互爲FALSE,以查看是否可以在正常的R會話中將其分解,但它工作正常。也許涉及更深層的東西。 – 2014-12-19 16:07:25
你可以重新定義'interactive',使其返回TRUE;。 – jdharrison 2014-12-19 00:14:09
嗨@jdharrison。我已經看過了。互動不僅僅是一種選擇。通過調用base中的'interactive()'函數來檢查交互性。看起來你不能在base中重新定義函數。我可以編寫一個本地'interactive()'函數,但問題出在一個包中,所以創建一個本地函數不會影響包。 – 2014-12-19 01:30:04