[R] Vectorize 'eol' characters

Stefano Conti Stefano.Conti at hpa.org.uk
Mon Oct 31 19:01:06 CET 2011


Thanks to Dr Shepard and Prof Riply for their helpful replies.

In my original query I should have also specified that I have tried the trick, also suggested by Prof Ripley, of appending the extra-column to the original matrix before dumping to text; however, in cases where the field separator string (argument of the 'sep' option in write.table) is non-null, I'd then have it also between the original matrix's last column and the appended text column -- which is not what I want.

Any additional suggestion / follow-up on this?  With continued thanks,


--
Dr Stefano Conti
Statistics Unit (room #2A19)
Health Protection Services
HPA Colindale
61 Colindale Avenue
London NW9 5EQ, UK
tel: +44 (0)208-3277825
fax: +44 (0)208-2007868



-----Original Message-----
From: Prof Brian Ripley [mailto:ripley at stats.ox.ac.uk]
Sent: Mon 31/10/2011 16:45
To: Stefano Conti
Cc: r-help at r-project.org
Subject: Re: [R] Vectorize 'eol' characters
 
On Mon, 31 Oct 2011, Stefano Conti wrote:

> Dear R users,
>
> When dumping an R matrix object into a file -- typically via the 
> 'write.table' function -- the 'eol' option can be used to specify 
> the end-of-line character(s) which should appear at the end of each 
> row.
>
> However the argument to 'eol' seems to be restricted to have length 
> 1, whereas ideally I would like different rows to be written to file 
> each with its own end character string.  For instance:

That's not what 'eol' means.  It is the indicator of the end of line, 
so of course it is the same for every line.

>> test <- matrix(1:12, nrow=4); test
>     [,1] [,2] [,3]
> [1,]    1    5    9
> [2,]    2    6   10
> [3,]    3    7   11
> [4,]    4    8   12
>
>> write.table(test, file="test.txt", sep=" ", eol=paste(" test", 1:4, "\n", sep=""))
>
>> read.table(file="test.txt", sep=" ")
>  V1 V2 V3 test1
> 1  1  5  9 test1
> 2  2  6 10 test1
> 3  3  7 11 test1
> 4  4  8 12 test1
>
> whereas I would like the last column of the dump file to be "test1", 
> "test2", "test3", "test4".  Is there a way this could be achieved?

Hmn, you said it: 'the last column'.
Create what you want as the last column of your data frame: it wil 
then be written to the file as the last column.

The author of write.table.

> With many thanks in advance for your help, kind regards,
>
>
> --
> Dr Stefano Conti
> Statistics Unit (room #2A19)
> Health Protection Services
> HPA Colindale
> 61 Colindale Avenue
> London NW9 5EQ, UK
> tel: +44 (0)208-3277825
> fax: +44 (0)208-2007868
>
> -----------------------------------------
> **************************************************************************
> The information contained in the EMail and any attachments is
> confidential and intended solely and for the attention and use of
> the named addressee(s). It may not be disclosed to any other person
> without the express authority of the HPA, or the intended
> recipient, or both. If you are not the intended recipient, you must
> not disclose, copy, distribute or retain this message or any part
> of it. This footnote also confirms that this EMail has been swept
> for computer viruses, but please re-sweep any attachments before
> opening or saving. HTTP://www.HPA.org.uk
> ************
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

-- 
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



More information about the R-help mailing list