Re: [R] attach and detach question

From: Gavin Simpson <gavin.simpson_at_ucl.ac.uk>
Date: Sat 08 Jul 2006 - 04:26:35 EST

On Fri, 2006-07-07 at 12:57 -0500, markleeds@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/
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%

______________________________________________
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
Received on Sat Jul 08 04:31:12 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 08 Jul 2006 - 06:15:58 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.