Why don't you just use 'sprintf' and set the format up to what you want:
 > x <- head(iris)
> cat(sprintf("%6.1f%6.1f%6.1f%6.1f %-20s\n", x[,1], x[,2], x[,3], x[,4],
x[,5]), sep='')
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
>
>


 On 11/22/05, Gabor Grothendieck <ggrothendieck@gmail.com> wrote:
>
> On 11/22/05, Gorjanc Gregor <Gregor.Gorjanc@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
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>



--
Jim Holtman
Cincinnati, OH
+1 513 247 0281

What the problem you are trying to solve?

	[[alternative HTML version deleted]]


