Is it possible to use the console from within tcltk?> library(tcltk) > tcl("puts", "stdout", "Hello, World")Error in structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"), class = "tclObj") : [tcl] can not find channel named "stdout".> .Tcl('puts stdout "Hello, World"')Error in structure(.External("dotTcl", ..., PACKAGE = "tcltk"), class = "tclObj") : [tcl] can not find channel named "stdout".> R.version.string # Windows Vista[1] "R version 2.7.0 RC (2008-04-17 r45367)"
Gabor Grothendieck wrote:> Is it possible to use the console from within tcltk? > >Not on Windows RGui, not without deeper magic, anyway (your examples work quite happily in a terminal on Linux). If you can figure out how to wire a Tcl channel to the R console, then I suppose it could be made to work. What might be easier to implement (currently it does not work) would be something like tcl(cat, "Hello, World") It almost works:> .Tcl(paste(.Tcl.callback(cat), "foo\\n"))foo <Tcl>>..but apparently there is a discrepancy between the single-string return value from .Tcl.callback(cat) and what .Tcl.objv expects.>> library(tcltk) >> tcl("puts", "stdout", "Hello, World") >> > Error in structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"), > class = "tclObj") : > [tcl] can not find channel named "stdout". > >> .Tcl('puts stdout "Hello, World"') >> > Error in structure(.External("dotTcl", ..., PACKAGE = "tcltk"), class > = "tclObj") : > [tcl] can not find channel named "stdout". > >> R.version.string # Windows Vista >> > [1] "R version 2.7.0 RC (2008-04-17 r45367)" > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
I assume by 'console' you mean the Rgui window. That is not where stdout is connected -- it is not a file. As the CHANGES file for 2.7.0 says o When Rgui is launched from a terminal, C output from ill-formed packages that write to stdout or stderr rather than use Rprintf will appear in the terminal rather than being lost. (Only on XP or later.) This can be very handy for debugging C code in packages: just write debugging messages to stdout. And indeed that is what your example does. It also writes to the terminal from Rterm. Tcl is no different from any other C-based add-on in this respect. Note though that system() does provide a way to capture stdout to the Rgui window, so you can probably run tcl scripts via the tcl shell and capture their output. On Tue, 13 May 2008, Gabor Grothendieck wrote:> Is it possible to use the console from within tcltk? > >> library(tcltk) >> tcl("puts", "stdout", "Hello, World") > Error in structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"), > class = "tclObj") : > [tcl] can not find channel named "stdout". >> .Tcl('puts stdout "Hello, World"') > Error in structure(.External("dotTcl", ..., PACKAGE = "tcltk"), class > = "tclObj") : > [tcl] can not find channel named "stdout". >> R.version.string # Windows Vista > [1] "R version 2.7.0 RC (2008-04-17 r45367)"Oh dear, not even the released version! Please update as the posting guide asked you to do before posting.> ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595