[R] How to read stored functions

Duncan Murdoch murdoch at stats.uwo.ca
Tue Sep 25 14:22:51 CEST 2007


On 9/25/2007 4:15 AM, Vladimir Eremeev wrote:
> source'ing is a bad practice because this saves additional copies of
> functions and data in the local workspace.
> 
> Wasting disk space is not a problem now since HDDs are cheap and function
> bodies are generally small.
> 
> But, when you change any function body, you have to repeat that source()
> call in local workspace of every project using the functions.

I disagree.  The bad practice is having local workspaces.  It's easy to 
see what's in a text file, and hard to see exactly what's in a .RData 
file, so it's better to keep everything as text.  There are situations 
where the overhead of converting text to internal objects is too high,
e.g. the results of long simulation runs may be worth saving in binary 
form so they're quicker to load.  But you can save objects one (or a 
few) at a time, you don't need to save everything.

If you find you're using a function in multiple projects, then it's time 
to build a small package to hold it.  The first line in the scripts for 
each of those projects can be

library(MyPackage)

If you think building a package is too much overhead, you can replace 
the line above with

source("path/to/MyFunction.R")

but this is less portable, since you may not have the function installed 
in the same directory on every system you use.

Duncan Murdoch

> 
> 
> Jared O'Connell wrote:
>> 
>> Having your functions in a text file, say "functions.r" and then calling:
>> 
>>>source("functions.r")
>> 
>> is also an option.  This assumes you are in the same directory as "
>> functions.r".  Perhaps take a look at ?setwd and ?getwd as well.
>> 
>> 
>> On 9/25/07, Vladimir Eremeev <wl2776 at gmail.com> wrote:
>>>
>>> You can save your functions to a file with
>>> save(<names>,file="/path/to/func_lib.RData")
>>> and then attach("/path/to/func_lib.RData").
>>>
>>> Or, you can create a package and load it with library() or require()
>>> 
>>> Mauricio Malfert wrote:
>>> >
>>> > Hi I'm simulating missing data patterns and  I've started to get a lot
>>> > of
>>> > functions in the same .R file is it possible to store al these
>>> functions
>>> > in
>>> > a library like one does in C++ (i.e the .h file) and read the functions
>>> > from
>>> > the main .R file
>>> > /Mauricio
>> 
>



More information about the R-help mailing list