[TxMt] For all R users: a R daemon running 'inside' of TM (first trial)

xolela at mac.com xolela at mac.com
Sun Dec 9 23:06:36 UTC 2007


Hans,

Thanks...  This looks impressive...  I will take a look at it & see  
how this would help  compared to the my current work flow using the   
'usual'   R bundle which has served very well...  I also do alot of  
sweaving BTW..

Does  installing the daemon "break"  the other R bundles?   Will the  
other R  bundles be the active ones until you type 'start' & TAB..?   
How about after?

I want to  help in testing & critiquing the daemon, but need to be  
able to continue working with the current R bundle  in the meantime..

thanks for all your efforts & for sharing....

danstan




On Dec 6, 2007, at 5:38 AM, Hans-Jörg Bibiko wrote:

> Hi,
>
> here comes a suggestion for all R users.
> I wrote a tiny R daemon bundle in order to run R 'inside' of TM.  
> There is no need to start RGUI etc.
> I found a naive way to do it and it turns out, at least for me,  
> it's quite useful. So my question is whether this approach is also  
> useful for others. If yes, I/we can elaborte this bundle.
>
> Demo Movie (4.3MB) http://www.bibiko.de/Rsession.mov
>
> Up to now you can do the following:
>
> -install this bundle R daemon
> -open new document, set the language to R or R console, type  
> 'start' and press TAB
> -R daemon will be installed into $HOME/Rdaemon (please check the  
> directory if you don't use it!)
> -after some seconds you can type any command into that window and  
> press 'NUMPAD-ENTER'
> -the result will be inserted into the current document
> -if you want to execute a selection the output will be written into  
> the file r_res (useful if you write a script)
> -errors/warnings will be output as tooltip (but not every error,  
> then you have to check 'geterrmessage()'!)
> -there is a progress bar showing the progress of R's calculation
>
> -the entire session you can find in r_out (the nice side-effect is  
> that even if the R daemon, or TM, or the Mac crashes you have at  
> least r_out to reconstruct the last session)
> -the R daemon listens at the named pipe r_in
> -errors/warnings are written to r_err
>
> -if you know that the command will take some minutes you can  
> execute this command in the background (SHIFT+NUMPAD-ENTER); the  
> result will be written into r_res; by doing so you can send a task  
> to R while writing further stuff in TM (I used sink() for that)
>
> -R daemon comes with its own persistant history list (i.e. if you  
> quit the R daemon and you start it again you also have all commands  
> from the last session (OPT+ARROWUP/DOWN CTRL+OPT+ARROWUP for a list  
> [last command comes first]))
>
> -I rewrote the help for the current word as an HTML page using frames
>
> -Autocomplete and command template now works case-sensitive meaning  
> if you look for 'mat' you won't get 'Math.'. Furthermore it also  
> works for functions defined in the current session!
>
> -I included an example TM project Rsession ($HOME/Rdaemon).
>
> -note 1: plot
> R runs as normal session in a hidden Terminal. Thus one has to use  
> X11 for plotting into the null device.
> If such a device is open and you quit X11 the R daemon will quit  
> immediately!! I cannot catch this yet.
>
> CTRL+NUMPAD-ENTER can show the current plot as PDF. I set the the  
> pdf file to ~/Rdaemon/plots/Rplot.pdf
>
> -note 2: quit
> You can type 'q()', delete the prompt and answer the question, or  
> type kill TAB to kill it.
>
> -known pitfall 1: readline
> In principal readline("prompt") works, but if 'prompt' is prompted,  
> you have to delete it or press ENTER to insert a value. Otherwise R  
> will get the entire line a input (I work on it)
>
> -known pitfall 2: synchronisation
> One tricky point is the synchronisation of the output. I went the  
> way to look for R's CPU coverage. If this is zero I assume that R's  
> ready. One can test this if you execute 'c(1:200000)'. If you see  
> the last line mentioning  you reached the max line etc. everything  
> is OK, if not one has to fine-tune it. It's done via a tiny sleep  
> command.
>
> As I already mentioned this is written very fast!! Esp. the daemon  
> which is written in Ruby needs some help from Ruby experts ;)
>
> With R daemon one has the full control meaning you can do thousand  
> of nifty things ;)
>
> Any comments?
>
> Cheers,
>
> --Hans<R daemon.tmbundle.zip>
> ______________________________________________________________________
> For new threads USE THIS: textmate at lists.macromates.com
> (threading gets destroyed and the universe will collapse if you don't)
> http://lists.macromates.com/mailman/listinfo/textmate




More information about the textmate mailing list