[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