From ripley at stats.ox.ac.uk  Tue Nov 14 18:28:13 2006
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Tue, 14 Nov 2006 17:28:13 +0000 (GMT)
Subject: [Rd] String to list and visa versa
In-Reply-To: <200611141209.22173.vdergachev@rcgardis.com>
References: <op.ti0mvjx2ffxks9@norisk>
	<200611141209.22173.vdergachev@rcgardis.com>
Message-ID: <Pine.LNX.4.64.0611141717350.22401@gannet.stats.ox.ac.uk>

This approach won't work in very many cases (but then nor will write.csv).

The safest way I know is to use serialize() and unserialize().  Next to 
that, deparse(control="all") and parse(text=) are quite good and give a 
human-readable character representation.

If fidelity is not the main issue, as.character and toString spring to 
mind.  unlist is recursive, and is not going to come close to being 
faithful for other than very simple lists. And what if ',' is a character 
in one of the list elements?

On Tue, 14 Nov 2006, Vladimir Dergachev wrote:

> On Tuesday 14 November 2006 12:00 pm, Tom McCallum wrote:
>> Hi,
>>
>> I need to collapse a list into a string and then reparse it back into the
>> list.  Normally when I need to do this I simply use write.csv and
>> read.csv, but I need to do this in memory within R rather than writing out
>> to file.  Are there any bespoke commands that any knows of that does
>> something like this or any tips for doing this that anyone can suggest?  I
>> basically don't care upon the string representation, only that I can
>> manipulate the list as a string and then reparse it back to a valid list
>> object.

'a valid list object' or the original list object?

> #List -> string:
>
> #
> # Put whatever you want into collapse to separate list entries
> #
> paste(unlist(L), collapse=",")
>
> #String->list
> strsplit(S, ",")
>
>                best
>
>                   Vladimir Dergachev
>
>
>>
>> Many thanks for your help,
>>
>> Tom

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] String to list and visa versa
Prof Brian Ripley