Attachment seems to have failed I put the content of the file below. 2006/6/6, Johan Sandblom <[EMAIL PROTECTED]>: > Since I sometimes use the open-source statistics environment R > (http://www.r-project.org) as well as ConTeXt, I thought a module that > could typeset R code as well as evaluate it on the fly would be > useful. Borrowing largely without understanding but lots of trial and > eror from m-gnustep.tex, I came up with the attached. Limited testing > indicates it works, but at least one problem is apparent: the R code > snippets have one unnecessary line break to start them and two after > the end. How can I fix that? Of course, any other suggestions are also > welcome. > > A recent R needs to be in the path, but given that, it seems to work > on Windows XP as well as Linux. > > Regards, Johan > > PS Emacs users may appreciate the following to get r-mode where appropriate: > (require 'mmm-mode) > (setq mmm-global-mode 'maybe) > (setq mmm-submode-decoration-level 2) > (mmm-add-group > 'context-plus > '((context-MP > :submode metapost-mode > :face mmm-code-submode-face > :front ".*\\\\start\\w*MP\\w*\\({\\w*}\\|\\[\\w*\\]\\|\\)\\W" > :back ".*\\\\stop\\w*MP") > (context-R > :submode r-mode > :face mmm-comment-submode-face > :front ".*\\\\startR.*\\W" > :back ".*\\\\stopR.*"))) > (add-to-list > 'mmm-mode-ext-classes-alist '(context-mode nil context-plus)) > > -- > Johan Sandblom N8, MRC, Karolinska sjh > t +46851776108 17176 Stockholm > m +46735521477 Sweden > "What is wanted is not the will to believe, but the > will to find out, which is the exact opposite" > - Bertrand Russell > > >
% Copyright Johan Sandblom, distributed and redistributable under the % terms of the GNU Lesser General Public License. \unprotect \newcounter\Rnumber % I would like to reduce this two-stage call, but then line-endings disappear \def\startR% {\bgroup \obeylines \catcode`\%=\@@letter \catcode`\#=\@@letter \dostartR% }% \def\dostartR#1\stopR% {\doglobal\increment\Rnumber% \letgvalue{rcs:n:\Rnumber}\Rnumber% \setgvalue{rcs:d:\Rnumber}{#1}% \edef\Rfile {\bufferprefix R-\Rnumber}% \bgroup% \the\everyR% \immediate\openout\scratchwrite=\Rfile.r% \def\par{\rawcharacter{10}}% \immediate\write\scratchwrite{\getvalue{rcs:d:\Rnumber}}% \immediate\closeout\scratchwrite% \egroup% \startmode[*\v!first]% \runR% \stopmode \typeRout% \egroup}% \def\startRhidden% {\bgroup \obeylines \catcode`\%=\@@letter \dostartRhidden{}} \def\dostartRhidden#1\stopRhidden {\doglobal\increment\Rnumber \letgvalue{rcs:n:\Rnumber}\Rnumber \setgvalue{rcs:d:\Rnumber}{#1}% \edef\Rfile {\bufferprefix R-\Rnumber}% \bgroup \the\everyR% \immediate\openout\scratchwrite=\Rfile.r% \def\par{\rawcharacter{10}}% \immediate\write\scratchwrite{\getvalue{rcs:d:\Rnumber}}% \immediate\closeout\scratchwrite% \egroup \startmode[*\v!first]% \runR% \stopmode \egroup} \newtoks\everyR \appendtoks \obeylines \to \everyR % The call to R has -q in order to prevent banner, --save to make sure % it saves the workspace after the run, --restore to make sure it % reads any workspace from a previous session \def\runR {\executesystemcommand{R -q --save --restore < \Rfile.r > \Rfile.Rout}} \def\typeRout {\typefile{\Rfile.Rout}} \protect \doifnotmode{demo}{\endinput} \starttext \startR a <- "bla" b <- "blabla" ls() \stopR bla bla \startRhidden rm(list=ls()) save.image() \stopRhidden bla \startR ls() ushape <- c(rexp(500000), 12-rexp(500000)) pdf("ushape.pdf") par(mfrow=c(1,2)) hist(ushape) plot(density(ushape), main="Density") dev.off() \stopR \input tufte \input knuth \startR x <- rnorm(900) y <- rexp(900) # test comment f <- gl(9,9,900) summary(aov(y~x+Error(f))) library(lattice) pdf("lattice.pdf") xyplot(y~x|f) dev.off() \stopR \placefigure[here]{}{\externalfigure[lattice]} \placefigure[here]{}{\externalfigure[ushape]} \input tufte \startR (test <- ".*\\\\ []{}=?!+%#|<|>@$") cat(test) \stopR \input bryson \input knuth \startR a.df <- data.frame(a=1:2, b=rnorm(2)) a.df$a testfunction <- function(a=NULL, ...) { for(i in 1:length(a)) { gsub(a[[i]], "([a-r]|[A-R])", "bla")} print(a)} \stopR \stoptext -- Johan Sandblom N8, MRC, Karolinska sjh t +46851776108 17176 Stockholm m +46735521477 Sweden "What is wanted is not the will to believe, but the will to find out, which is the exact opposite" - Bertrand Russell _______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context