I tried Jim's function and it works. But here is an example just in case.
AA <- list(a=c(1,2,3,4),b = c("a","b","c"))
BB <- list(c=c(1,2,3,4,5),d=c("a","b","c","d","e"))
mylist <- (list(AA,BB))
lapply(mylist,function(x) write.table(x,file = test.txt))
Show Traceback
Error in (function (..., row.names = NULL, check.rows = FALSE,
check.names = TRUE, :
arguments imply differing number of rows: 4, 3
On Sun, Dec 16, 2018 at 8:45 AM Ek Esawi <esawiek at gmail.com> wrote:
Thank you Jim and Bert,
I tried Jim's function and it works. But here is an example just in case.
AA <- list(a=c(1,2,3,4),b = c("a","b","c"))
BB <- list(c=c(1,2,3,4,5),d=c("a","b","c","d","e"))
mylist <- (list(AA,BB))
lapply(mylist,function(x) write.table(x,file = test.txt))
Show Traceback
Error in (function (..., row.names = NULL, check.rows = FALSE,
check.names = TRUE, :
arguments imply differing number of rows: 4, 3
On Sun, Dec 16, 2018 at 1:03 AM Jim Lemon <drjimlemon at gmail.com> wrote:
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 at 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 at 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.