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]]
The result of the 'lapply' is also printed, so try this:
sink(sprintf("%s",filename))
invisible(lapply(myList,print))
sink()
Jim Holtman
Data Munger Guru
What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.
On Wed, Oct 1, 2014 at 6:59 AM, Ingrid Charvet <Ingrid.Charvet at 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 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.
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.Charvet at 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 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.