[R] Combine lists into a data frame or append them to a text file

Jim Lemon drjimlemon @ending from gm@il@com
Sun Dec 16 07:03:27 CET 2018


Hi Ek,
I thought there would be a simple fix for this, but had to write a
little function:

fillList<-function(x) {
 maxrows<-max(unlist(lapply(x,length)))
 return(lapply(x,"[",1:maxrows))
}

that fills up the rows of each list with NAs. I got the expected result with:

testlist<-list(a=1:8,b=1:9,c=1:10)
as.data.frame(fillList(testlist))

so:

for (i in 1:length(MyTables)) {
write.table(as.data.frame(fillList(MyTables[i])),
 file = "Temp.txt",append = TRUE,quote = TRUE)

may do the job.

Jim

On Sun, Dec 16, 2018 at 2:28 PM Ek Esawi <esawiek using gmail.com> wrote:
>
> Hi All,
>
> I have an R object that is made up of N number of lists which are all
> of different number of columns and rows.  I want to combine the N
> lists into a single data frame or write (append) them into text file.
> I hope the question is clear and doesn’t require an example. I am
> hoping to accomplish this using base R functions.
> Below is what I tried but both gave me the same error which I do
> understand, I think, but I don’t know how to fix it. My R object is
> MyTables
>
> lapply(MyTables, function(x) write.table(x, file = "Temp.txt",append = TRUE ))
> OR
> for (i in 1:length(MyTables)) {
> write.table(MyTables[i], file = "Temp.txt",append = TRUE,quote = TRUE)
>
> the error
> Error in (function (..., row.names = NULL, check.rows = FALSE,
> check.names = TRUE,  :
>   arguments imply differing number of rows: 51, 8, 30
>
> Thanks--EK
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.



More information about the R-help mailing list