我正在努力将原始类型输出到标准输出一段时间。 这是我尝试过的,并没有按照预期的方式工作:
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
我正在寻找一种方法来将所有三个字节/字符打印到stdout。
答案 0 :(得分:8)
如果您使用的是具有'cat'或类似程序的操作系统,我们可以将任意数据传输到stdout,如下所示:
con <- pipe("cat", "wb")
writeBin(as.raw(c(0x41, 0x00, 0x43)), con)
flush(con)
这已成为一段时间的问题,特别是因为我们希望将R用于公共网关接口(CGI)。我不相信有更直接的路线,但您可以查看RApache源代码,了解sendBin
功能的实现方式。