一種方式做到這一點的類UNIX系統就會打開一個管道被重定向stdout
和stderr
到FIFO的過程:
# Setup
system('mkfifo output.fifo')
p_out <- fifo('output.fifo', 'r')
p_in <- pipe('pdflatex &> output.fifo', 'w')
# See what TeX said on startup
readLines(p_out)
[1] "This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010)"
readLines(p_out)
character(0) # TeX has nothing more to say
# Tell TeX to do something
writeLines('\\documentclass{article}', p_in)
flush(p_in)
# See what it said in response
readLines(p_out)
[1] "**entering extended mode"
[2] "LaTeX2e <2009/09/24>"
[3] "Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, ba"
[4] "sque, danish, dutch, finnish, french, german, ngerman, swissgerman, hungarian, "
[5] "italian, bokmal, nynorsk, polish, portuguese, spanish, swedish, loaded."
[6] ""
不幸的是,Windows不支持fifo
。
這是一個與基地的平臺兼容性問題?我應該在那裏提交一個錯誤/問題? 此外,文件選項在技術上是一個解決方案,但實際上這是爲了管道大量的SQL結果以避免錯誤的ODBC驅動程序,因此寫入磁盤並重新讀入會很慢。 – mjbommar 2011-03-18 18:19:12
我在Linux上試過,如果R支持它的話,它會有它。沒有必要提交錯誤報告,除非您可以編寫代碼或支付某人的費用--R Core的手已滿。最後,我個人傾向於通過......編寫直接的數據庫訪問塊來避免錯誤的ODBC驅動程序。在那裏,通過一些GSoC指導,爲彭博,Lim,OneTick以及PostgreSQL等後端做好了準備。你的後端是什麼? – 2011-03-18 18:29:31
@mjbommar,我還沒有找到一種方法來做你所描述的,我花了幾個小時嘗試。但是,如果您只是試圖在不使用ODBC驅動程序的情況下將SQL數據庫結果轉換爲R,則可能不需要雙向交互。嘗試使用system()連接它並將查詢作爲輸入提供。我這樣做是爲了訪問我所有的數據庫(這需要RMySQL無法做到的SSH隧道)。 – Noah 2011-03-18 19:25:48