You want to put lapply(myList, print) inside a call to invisible invisible(lapply(myList, print))
(or put the whole sink(file)/lapply(...)/sink() sequence into a function or use tmp<-lapply(...) so autoprinting is suppressed) Bill Dunlap TIBCO Software wdunlap tibco.com On Wed, Oct 1, 2014 at 10:41 AM, Ingrid Charvet <ingrid.char...@rms.com> wrote: > Hi Bill, thanks for your suggestions. > > Regarding the list elements names, your idea works well - thank you. > > However, my first issue is not resolved. I omitted the second sink > statement, and R still created a text file with duplicate list elements. > Then I omitted both sink statements (keeping only the lapply), but obviously > then no text file is created at all (although it does "print" properly on > the R console) ... > > I also tried: > >> func <- function(i) { >> write.table(inventory[[i]],file=sprintf("test_new%d",i)) } >> lapply(1:10,func) > > But here of course I get 10 different text files (one per list element) when > what I would like is to have them all in one file... > > Ingrid > > > > -----Original Message----- > From: William Dunlap [mailto:wdun...@tibco.com] > Sent: 01 October 2014 15:54 > To: Ingrid Charvet > Cc: r-help@r-project.org > Subject: Re: [R] Print list to text file with list elements names > > Omit the sink() statements to see what is happening - > lapply(myList,print) prints > each item in the list and then the output of lapply is printed via the > autoprinting mechanism. > If you put this into a function or saved the return value of lapply into a > variable or wrapped the call to lapply in a call to invisible() then the > autoprinting would not happen. > > You said that you wanted the name each list item printed before the item. > print(myList) would do that, but I assume you've already tried that and > didn't like the format. You can get your own formatting of the name with > something like >> myList <- list(First=data.frame(x=1:2,y=letters[1:2]), > Second=data.frame(x=1:3,z=LETTERS[24:26])) >> invisible(lapply(seq_along(myList), function(i){ cat(sep="", "\n", >> names(myList)[i], ":\n") ; print(myList[[i]])})) > > First: > x y > 1 1 a > 2 2 b > > Second: > x z > 1 1 X > 2 2 Y > 3 3 Z > > > > > Bill Dunlap > TIBCO Software > wdunlap tibco.com > > > On Wed, Oct 1, 2014 at 3:59 AM, Ingrid Charvet <ingrid.char...@rms.com> > wrote: >> Hi everyone, >> >> I want to write a list of data frames to a text file and preserve the >> names given to the list elements (I am using R 3.1.0). >> >> I tried: >> >> setNames(myList, myNames) # myNames is a vector of char elements same >> length as myList >> >> sink(sprintf("%s",filename)) >> lapply(myList,print) >> sink() >> >> And here I have two problems: >> >> 1. R writes each element of my list to the text file twice, so for example >> if I have a list with 2 elements (i.e. data frames) in it, it will write 4: >> in order data frame 1, data frame 2, data frame 1, data frame 2. >> >> 2. The names of list elements do not print to the text file. >> >> Any suggestions to solve these issues would be appreciated! >> Many thanks, >> >> Ingrid >> >> >> >> >> ________________________________ >> This message and any attachments contain information that may be RMS Inc. >> confidential and/or privileged. If you are not the intended recipient (or >> authorized to receive for the intended recipient), and have received this >> message in error, any use, disclosure or distribution is strictly >> prohibited. If you have received this message in error, please notify the >> sender immediately by replying to the e-mail and permanently deleting the >> message from your computer and/or storage system. >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@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. > > > This message and any attachments contain information that may be RMS Inc. > confidential and/or privileged. If you are not the intended recipient (or > authorized to receive for the intended recipient), and have received this > message in error, any use, disclosure or distribution is strictly > prohibited. If you have received this message in error, please notify the > sender immediately by replying to the e-mail and permanently deleting the > message from your computer and/or storage system. ______________________________________________ R-help@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.