[R] A question about R environment
Tong Wang
wangtong at usc.edu
Tue Jan 9 09:55:41 CET 2007
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 <phgrosjean at sciviews.org>
Date: Monday, January 8, 2007 10:09 pm
Subject: Re: [R] A question about R environment
To: François Pinard <pinard at iro.umontreal.ca>, Tong Wang <wangtong at usc.edu>, R help <r-help at 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
> >
> >
>
More information about the R-help
mailing list