2011-09-14 53 views
4

我很努力地將原始類型輸出到標準輸出。 這裏是我的嘗試和沒有工作所需的方式:如何將原始類型/字節寫入標準輸出?

r <- as.raw(c(0x41, 0x00, 0x43)) # r = "A\0C" 
cat(rawToChar(r)) # displays warning and skips data after NULL (outputs "A") 
cat(r) # outputs "41 00 43" 
writeBin(r, stdout()) # error: can only write to binary connection 

我正在尋找一種方式來獲得打印到標準輸出的所有三個字節/字符。

+0

這是不可能的。期。 – Jeff

+0

'writeBin(r,「/ dev/stdout」)' –

+0

有時可以告訴我很苦;)?我真的希望R核心會添加一個連接API。然後rApache可以像Matt在下面指出的那樣擺脫sendBin。 – Jeff

回答

8

如果您正在使用的操作系統有一個「貓」或類似的程序,我們可以管任意數據到stdout,像這樣:

con <- pipe("cat", "wb") 
writeBin(as.raw(c(0x41, 0x00, 0x43)), con) 
flush(con) 

這已經有一段時間的問題,尤其是因爲我們希望將R用於通用網關接口(CGI)。我不相信有更直接的路線,但你可以看看​​源代碼,看看sendBin函數是如何實現的。