Francois (sorry can't type the right letter) , thanks a million for the detailed response, you have really cool functions there !
Philippe : I will definitely follow your advice later, but I got some time pressure from the current project, so have to go with the easy sol. now , thanks a lot. Happy new year every one! cheers tong ----- Original Message ----- From: Philippe Grosjean <[EMAIL PROTECTED]> Date: Monday, January 8, 2007 10:09 pm Subject: Re: [R] A question about R environment To: François Pinard <[EMAIL PROTECTED]>, Tong Wang <[EMAIL PROTECTED]>, R help <r-help@stat.math.ethz.ch> > Please, don't reinvent the wheel: putting functions in a dedicated > environment is one of the things done by R packages (together with > a > good documentation of the function, and making them easily > installable > on any R implementation). So, this is probably the time for you to > read > the "Writing R extensions" manual, and to start implementing your > own R > package! > Best, > > Philippe Grosjean > > François Pinard wrote: > > [Tong Wang] > > > >> I created environment "mytoolbox" by : mytoolbox <- > >> new.env(parent=baseenv()). Is there anyway I put it in the > search > >> path? In a project, I often write some small functions, and > load them > >> into my workspace directly, so when I list the objects with > ls(), it > >> looks pretty messy. So I am wondering if it is possible to > creat an > >> environment, and put these tools into this environment. For > example, > >> I have functions fun1(), fun2() ... and creat an environment > mytoolbox > >> which contains all these functions. And it should be somewhere > in the > >> search path: ".GlobalEnv" "mytoolbox" "package:methods". > > > > Here is a trick, shown as a fairly simplified copy of my > ~/.Rprofile. > > It allows for a few simple functions always available, yet > without > > having to create a package, and leaving ls() and any later .RData > file > > unencumbered. > > > > The idea is to use local() to prevent any unwanted clutter to > leak out > > (my real ~/.Rprofile holds more than shown below and use > temporary > > variables), to initialise a list meant to hold a bunch of > functions or > > other R things, and to save that list on the search path. > > > > This example also demonstrate a few useful functions for when I > read the > > R mailing list. I often need to transfer part of emails containing > > code excerpts within the window where R executes, while removing > > quotation marks, white lines and other noise. I merely highlight- > select > > part of the message with the mouse, and then, within R, do things > like:> > > xs() source the highlighted region > > xd() read in a data.frame > > xm() read in a matrix > > xe() evaluate and print an expression > > xv() read a list of values as a vector > > > > The list above in decreasing order of usefulness (for me). > Except for > > xs(), which has no automatic printout, you may either let the > others > > print what they got, or assign their value to some variable. > Arguments > > are also possible, for example like this: > > > > xd(T) read in a data.frame when the first line holds column > names> > > > > > > if (interactive()) { > > local({ > > > > fp.etc <- list() > > > > fp.etc$xsel.vector <- function (...) { > > connexion <- textConnection(xselection()) > > on.exit(close(connexion)) > > scan(connexion, ...) > > } > > fp.etc$xsel.dataframe <- function (...) { > > connexion <- textConnection(xselection()) > > on.exit(close(connexion)) > > read.table(connexion, ...) > > } > > fp.etc$xsel.matrix <- function (...) { > > connexion <- textConnection(xselection()) > > on.exit(close(connexion)) > > data.matrix(read.table(connexion, ...)) > > } > > fp.etc$xsel.eval <- function (...) { > > connexion <- textConnection(xselection()) > > on.exit(close(connexion)) > > eval(parse(connexion, ...)) > > } > > fp.etc$xsel.source <- function (...) { > > connexion <- textConnection(xselection()) > > on.exit(close(connexion)) > > source(connexion, ...) > > } > > > > fp.etc$xselection <- function () > > { > > lignes <- suppressWarnings(readLines('clipboard')) > > lignes <- lignes[lignes != ''] > > stopifnot(length(lignes) != 0) > > marge <- substr(lignes, 1, 1) > > while (all(marge %in% c('>', '+', ':', '|')) > > || all(marge == ' ')) { > > lignes <- substring(lignes, 2) > > marge <- substr(lignes, 1, 1) > > } > > lignes > > } > > > > fp.etc$xv <- fp.etc$xsel.vector > > fp.etc$xd <- fp.etc$xsel.dataframe > > fp.etc$xm <- fp.etc$xsel.matrix > > fp.etc$xe <- fp.etc$xsel.eval > > fp.etc$xs <- fp.etc$xsel.source > > > > attach(fp.etc, warn=FALSE) > > > > }) > > } > > > > # vim: ft=r > > > > > ______________________________________________ R-help@stat.math.ethz.ch 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.