[R] Fw: Re: Is there anything like a write.fwf() or possibility to print adata.frame without rownames?

Gabor Grothendieck ggrothendieck at gmail.com
Tue Nov 22 14:09:38 CET 2005


On 11/22/05, Gorjanc Gregor <Gregor.Gorjanc at bfro.uni-lj.si> wrote:
> > Hi
> >
> > can you please explain why do you need it? What do you want to do with the exported file?
> >
> > I wonder what type of software can not accept any reasonable delimiter and requires fwf files.
> >
> > The only workaround I can imagine is to transfer all columns to character and add leading spaces to each item which is > shorter than longest item in specified column to equalize length of all items in column and then use
> >
> > write.table( tab, "file.txt", sep=" ", row.names=F)
> >
> > as suggested.
> >
> > But I still wonder why?
>
> OK, I did not want to be to specific, but here it goes. I am using some
> "special" software for variance component estimation and prediction in
> genetics. Programs are VCE and PEST (http://w3.tzv.fal.de/%7Eeg/) and
> they both read data in FW (fixed width) format. For those programs
> you can only give data in such format and it is really tedious to do so,
> but that is the way it is.
>
> >
> > If you used e.g.
> > write.table( tab, "file.xls", sep="\t", row.names=F)
> >
> > you can open it directly by spreadsheet program just by clickung on it and everything shall be properly aligned.
> >
>
> I am fully aware of this, but I do need FW format. I will try with sprintf(), but
> this looks very though for me.
>
> > >>Petr Pikal wrote:
> > >>> Hi
> > >>>
> > >>> did you tried something like
> > >>>
> > >>> write.table( tab, "file.txt", sep="\t", row.names=F)
> > >>>
> > >>> which writes to tab separated file?
> > >>>
> > >>
> > >>Petr thanks, but I do not want a tab delimited file. I need spaces
> > >>between columns.
> > >
> > > write.table( tab, "file.txt", sep="", row.names=F)
> > > Can it do what you want?
> >
> > Ronggui thanks,
> >
> > but this does not work also. For example I get something like
> > this bellow
> >
> > "26" "1" 42 "DA" "DA" "lipa" "Monika"
> > "26" "1" 42 "DA" "DA" "lipa" "Monika"
> > "27" "1" 41 "DA" "DA" "smreka" "Monika"
> > "27" "1" 41 "DA" "DA" "smreka" "Monika"
> >
> > and you can see, that there is a problem, when all "values"
> > in a column do not have the same length. I need to get
> >
> > "26" "1" 42 "DA" "DA" "lipa"   "Monika"
> > "26" "1" 42 "DA" "DA" "lipa"   "Monika"
> > "27" "1" 41 "DA" "DA" "smreka" "Monika"
> > "27" "1" 41 "DA" "DA" "smreka" "Monika"
> >
> > i.e. columns should be properly aligned.
> >

Try this:

> irish <- head(iris)
> write(t(apply(irish, 2, format)), file = "", ncol = ncol(irish))
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa




More information about the R-help mailing list