2012-10-23 84 views
3

以'批處理模式'運行R時,interactive標誌設置爲false,這可以防止在嵌入/批處理設置的上下文中中斷進程的任何用戶提示。參見:R交互式和批處理模式以及heIp瀏覽器

R -e 'interactive()' 

當使用Rscript時,有一些成立。也可以使用interactivity軟件包手動設置該標誌。爲了測試,我們可以嘗試:

R -e 'install.packages("anything") 

假設沒有CRAN鏡已被設置尚未,​​install.packages不會表現出一定的互動鏡選擇器,而是拋出一個錯誤,然後退出。

但是,我注意到help?命令仍然有效。例如,下面的命令將顯示幫助瀏覽器,並且在我按下q之前它不會繼續。

R -e 'help(lm); 1+2' 

然而,將輸出發送一個文件時,它不顯示交互式提示,只是轉儲輸出完整的幫助文檔:

R -e 'help(lm); 1+2' > output.txt 

我有點困惑,現在約當使用help時會發生什麼。爲什麼即使R在批處理模式下運行時也能獲得交互式幫助瀏覽器?這是R的特性,還是來自Debian/Ubuntu前端?由於R等待使用輸入而在內部調用help函數(即Rserve,RInside,JRI等)時,是否有R變得無響應的風險?

回答

1

幫助實際上產生一個新的進程,尋呼機,這就好比是 「少」:

> help(lm); 1+2 
[1]+ Stopped     R -e 'help(lm); 1+2' 
$ ps 
    PID TTY   TIME CMD 
27735 pts/6 00:00:00 bash 
31607 pts/6 00:00:00 R 
31615 pts/6 00:00:00 sh 
31616 pts/6 00:00:00 pager 
31617 pts/6 00:00:00 ps