[R] write output in a custom format

baptiste Auguié ba208 at exeter.ac.uk
Thu Feb 14 22:19:32 CET 2008


Thanks for the input! It does work fine, however I'll have to do  
another loop to repeat this whole process quite a few times (10^3,  
10^4 particles maybe), so I was hoping for a solution without loop.  
Maybe I could reshape all the values into a big array, dump it to a  
file and replace some values using system(awk...). I just don't  
really know how to format the data, having different number of values  
for some lines. Would that be a sensible thing to do?

thanks,

baptiste




On 14 Feb 2008, at 16:49, jim holtman wrote:

> Here is a start.  You basically have to interate through your data and
> use 'cat' to write it out:
>
> particle <- list(dose=c(1,100.0,0),pos=data.frame(x=c(0,1,0,1),y=c 
> (0,1,0,1)))
> output <- file("/tempxx.txt", "w")
> cat(particle$dose, "\n", file=output, sep=" ")
> for (i in 1:nrow(particle$pos)){
>     cat(particle$pos$x[i], particle$pos$y[i], "\n", file=output,  
> sep=" ")
> }
> cat("#\n", file=output, sep=" ")
> close(output)
>
> Here is what the file looks like:
>
> 1 100 0
> 0 0
> 1 1
> 0 0
> 1 1
> #
>
>
> On 2/14/08, baptiste Auguié <ba208 at exeter.ac.uk> wrote:
>> Hi,
>>
>>
>> I need to create a text file in the following format,
>>
>>> 1 100.0 0
>>>  0 0
>>>  1 1
>>>  0 0
>>>  1 1
>>> #
>>> 1 100.0 0
>>>  0 0
>>>  0 1
>>>  1 0
>>>  1 1
>> ...
>>
>> where # is part of the format and not a R comment.
>>
>> Each block (delimited by #) consists of a first line with three
>> values, call it dose, and a list of (x,y) coordinates which are a
>> matrix or data.frame,
>>
>>
>>> particle <- list(dose=c(1,100.0,0),pos=data.frame(x=c(0,1,0,1),y=c
>>> (0,1,0,1)))
>>>
>>> print(particle)
>>
>>
>>
>> I'd like to establish a connection to a file and append to it a
>> "particle" block in the format above, or even write the whole file at
>> once.
>>
>> Because different lines have a different number of elements, I
>> couldn't get write.table to work in this case, and my attempts at  
>> sink
>> (), dump(), writeLines(), writeChar() all turn into really dirty
>> solutions. I have this feeling I'm overlooking a simple solution.
>>
>> Any help welcome,
>>
>>
>> baptiste
>>
>> _____________________________
>>
>> Baptiste Auguié
>>
>> Physics Department
>> University of Exeter
>> Stocker Road,
>> Exeter, Devon,
>> EX4 4QL, UK
>>
>> Phone: +44 1392 264187
>>
>> http://newton.ex.ac.uk/research/emag
>> http://projects.ex.ac.uk/atto
>>
>> ______________________________________________
>> 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.
>>
>
>
> -- 
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem you are trying to solve?

_____________________________

Baptiste Auguié

Physics Department
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag
http://projects.ex.ac.uk/atto



More information about the R-help mailing list