From b.rowlingson at lancaster.ac.uk  Fri Feb 12 09:50:26 2010
From: b.rowlingson at lancaster.ac.uk (Barry Rowlingson)
Date: Fri, 12 Feb 2010 08:50:26 +0000
Subject: [Rd] R Startup configuration file
In-Reply-To: <d8ad40b51002100706t5869535av162a43a6362d6c6b@mail.gmail.com>
References: <d8ad40b51002100123s4b1d77bmc27ece9686106ef@mail.gmail.com>
	<4B729C0F.3030301@stats.uwo.ca>
	<d8ad40b51002100706t5869535av162a43a6362d6c6b@mail.gmail.com>
Message-ID: <d8ad40b51002120050o74e12ad2pb0423c8017f90350@mail.gmail.com>

On Wed, Feb 10, 2010 at 3:06 PM, Barry Rowlingson
<b.rowlingson at lancaster.ac.uk> wrote:

> ?But I agree that writing a saveable options package is the first step
> - then making that a default in R is the second so people don't have
> to edit profiles and R packages and applications can expect an API for
> savable state.

 More thinking about this has turned it into a problem of being able
to serialize R objects to XML. The most reliable way I can find of
doing that is to use serialize, then rawToChar, and put a big old hex
string in the XML. Hardly the most user-friendly format, but then
users aren't supposed to edit XML anyway. I have also considered
having encoding types for objects, something like:

<object encoding="raw" name="foo">66f6e.....a7726</object>
<object encoding="numeric" name="bar">3.141</object>
<object encoding="numeric" size="2"
name="baz"><item>3.14</item><item>6.28</item></object>

at which point I remembered that R objects can also have attributes
which can be any other R objects too. At which point I realized life's
too short for this...

..and had a rethink. Lots of software these days has a configuration
directory, and runs all the scripts or configs within - think
/etc/cron.daily/ or /etc/init.d on a unix system. This has the
advantage that components of the system can manage their own startup
files there, and not worry about stomping on others. So you'd have a
.Rprofile.d/ folder with, say, a cran.R file that could be sourced by
anything that used CRAN, for example to set the default mirror. I'd
insist that each file in .Rprofile.d/ started with a "# do not edit
this file" warning...

 I'll think some more over coffee until I realise why this is another
of my dumb ideas...

Barry



[Rd] R Startup configuration file
Barry Rowlingson