[R] attach and detach question

Gavin Simpson gavin.simpson at ucl.ac.uk
Fri Jul 7 20:26:35 CEST 2006


On Fri, 2006-07-07 at 12:57 -0500, markleeds at verizon.net wrote:
<snipped />
> 
> 1) i can't find an example somewhere of
> just saving two objects rather than the whole session.
> i've looked and looked and i can't find it.

?save

> 2) if i am able to save these two objects, i was hoping that it
> would be possible to write code inside my R program
> that basically says, "if these objects already exist in
> such and such database, then skip over this section of the code
> that creates them".
> 

Is this the kind of thing you mean? I used the FileExists function from
package RandomFields as this does the file checking - you could do
something similar with ?file.list and match the name but why reinvent
the wheel.

I flipped your situation 2 around, if you have some really big objects
then it would make sense to generate the objects, save them out to
files. From a new session, you are likely not to have objects, so
perhaps better to check the file exists, if so load it, then check the
right objects are there. Alter to what suits you best.

## create two objects to be saved
obj1 <- matrix(rnorm(1000), ncol = 10)
obj2 <- matrix(rnorm(1000), ncol = 10)
## save them
save(obj1, obj2, file = "tmp.file.RData")
## clean up
rm(list = ls())
ls()

## load the required package
require(RandomFields)

## load the saved objects
if(FileExists("tmp.file.RData")) {
  load("tmp.file.RData")
  if(exists("obj1") & exists("obj2")) {
    ## more code here
    summary(obj1)
    summary(obj2)
  } else
  stop("Required objects don't exist!")
} else
stop("Big objects not found, check file exists!")

## clean up
rm(list = ls())

## if file exists but not correct objects
if(FileExists("tmp.file.RData")) {
  load("tmp.file.RData")
  ## simulate different object names
  obj3 <- obj1
  obj4 <- obj2
  rm(obj1, obj2)
  if(exists("obj1") & exists("obj2")) {
    ## more code here
    summary(obj1)
    summary(obj2)
  } else
  stop("Required objects don't exist!")
} else
stop("Big objects not found, check file exists!")

## clean up
rm(list = ls())

## if file doesn't exists
unlink("tmp.file.RData")
if(FileExists("tmp.file.RData")) {
  load("tmp.file.RData")
  ## remove the objects
  obj3 <- obj1
  obj4 <- obj2
  rm(obj1, obj2)
  if(exists("obj1") & exists("obj2")) {
    ## more code here
    summary(obj1)
    summary(obj2)
  } else
  stop("Required objects don't exist!")
} else
stop("Big objects not found, check file exists!")

HTH,

G

-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Gavin Simpson                 [t] +44 (0)20 7679 0522
 ECRC & ENSIS, UCL Geography,  [f] +44 (0)20 7679 0565
 Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
 Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/cv/
 London, UK. WC1E 6BT.         [w] http://www.ucl.ac.uk/~ucfagls/
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%



More information about the R-help mailing list