Gorjanc Gregor
2005-Nov-22 12:48 UTC
[R] Fw: Re: Is there anything like a write.fwf() or possibility to print adata.frame without rownames?
> 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. > > Lep pozdrav / With regards, > Gregor Gorjanc > > ---------------------------------------------------------------------- > University of Ljubljana Biotechnical Faculty URI: > http://www.bfro.uni-lj.si/MR/ggorjan Zootechnical Department mail: > gregor.gorjanc <at> bfro.uni-lj.si Groblje 3 tel: > +386 (0)1 72 17 861 SI-1230 Domzale fax: +386 (0)1 72 17 > 888 Slovenia, Europe > ---------------------------------------------------------------------- > "One must learn by doing the thing; for though you think you know it, > you have no certainty until you try." Sophocles ~ 450 B.C. > > ______________________________________________ > R-help at 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.htmlPetr Pikal petr.pikal at precheza.cz
Gabor Grothendieck
2005-Nov-22 13:09 UTC
[R] Fw: Re: Is there anything like a write.fwf() or possibility to print adata.frame without rownames?
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
Gregor Gorjanc
2006-Jan-30 07:46 UTC
[R] Is there anything like a write.fwf() or possibility to print a data.frame without rownames?
Hello! Some time ago[1] I was aking about write.fwf or something similar. I have now written a function[2] that does this job and it works reasonably well. It is a bit slow, but works fine for me. Thanks to all, who have helped me with this issue. [1]https://stat.ethz.ch/pipermail/r-help/2005-November/081597.html [2]http://www.bfro.uni-lj.si/MR/ggorjan/software/R/index.html -- Lep pozdrav / With regards, Gregor Gorjanc ---------------------------------------------------------------------- University of Ljubljana PhD student Biotechnical Faculty Zootechnical Department URI: http://www.bfro.uni-lj.si/MR/ggorjan Groblje 3 mail: gregor.gorjanc <at> bfro.uni-lj.si SI-1230 Domzale tel: +386 (0)1 72 17 861 Slovenia, Europe fax: +386 (0)1 72 17 888 ---------------------------------------------------------------------- "One must learn by doing the thing; for though you think you know it, you have no certainty until you try." Sophocles ~ 450 B.C.