2010-07-26 64 views
9

是否有一種簡單的方法來轉換R中的所有GUI元素,並僅通過OSX上的命令行來運行它?禁用R,圖形設備R

我想在我的OSX機器上覆制遠程linux終端的行爲。因此,plot()應該只保存一個文件,而CRAN鏡像選擇應該是文本,而不是Tk接口。我無法找到設置此行爲的位置。

回答

1

我沒有自己的OS X中,但你嘗試取消設置X11環境變量DISPLAY:

DISPLAY = 「」 R --vanilla

當我這樣做,在Linux上,查詢R爲capabilties(),x11根據需要變爲FALSE。

+0

這確實禁用X11,但留下誇和tcltk如此。 plot()仍然打開一個石英窗口。 – Tristan 2010-07-26 23:17:51

+3

options(device = pdf) – 2010-07-27 17:53:55

3

對於圖,您可以使用pdf()命令(或png(),jpeg()...)將輸出指向文件。

0

我不運行OSX,但可以嘗試從終端應用程序運行R,而不是運行Mac OSX啓動程序,並查看它是否按照您的需要運行。

正如Matti寫道的,您可以使用以下命令將輸出發送到文件;但我不知道這是否真的是你問題的實質。

png("pngfile.png") 
plot(foo) 
title(main="bar") 
dev.off() 

所以不是石英圖形對象,而是輸出到文件。

同樣,您可以輸出通常會在終端中出現的文件。

sink("foo.file") 
+0

即使命令行R在默認情況下也會打開一個石英窗口,如果該功能存在。我發現禁用它的唯一方法是編譯R而沒有aqua支持,但這並不理想。 – Tristan 2010-07-28 16:05:34

+1

使用'png()'命令是一個非常糟糕的例子,因爲png實際上需要一個X11連接來進行渲染。將其替換爲'pdf()' – parasietje 2014-04-22 14:01:13

+0

最新的R可以被編譯爲具有png()支持而不需要X11(通過使用畫布)。以防萬一任何人閱讀此評論。 – dieresys 2016-10-28 17:57:25

4

我有這個確切的問題,並希望有一種方法來做到這一點,而無需更改我現有的代碼。我通常運行圖形支持,但有時我會在服務器上運行一個腳本來獲取更大的數據集,然後我只想讓這些圖自動輸出到某個地方。

在Dirk的回答中,Ian Fellows給出了簡單的解決方案。在R類型的命令行上:

options(device=pdf) 

然後任何圖將直接寫入到當前的Rplots.pdf文件中。

如果你要的文件不被繪製在所有然後用

options(device=NULL)