R Split a column based on pattern -


i have long list of vectors got using str_extract_all().

the head(list) output following:

[1] "argentina"  [[2]] [1] "buenos "   "aires"     "buenos "   "aires"     "argentina"  [[3]] [1] "argentina" "argentina"  [[4]] [1] "argentina" "argentina"  [[5]] [1] "argentina"  [[6]] [1] "argentina" 

i want move output excel each element occupying different column within same row. example:

p1          p2         p3       p4     p5 argentina   na         na       na     na buenos      aires      buenos   aires  argentina argentina   argentina  argentina na    na 

but following error while trying it:

error in data.frame("argentina", c("buenos ", "aires", "buenos ", "aires", : arguments imply differing number of rows: 1, 5, 2, 3, 6, 4, 0, 9, 8, 7, 38,

any appreciated.

as lengths of list elements different, may need pad na @ end before rbinding assinging length<- maximum length of elements in list.

lst <- lapply(lst, trimws) d1 <- as.data.frame(do.call(rbind, lapply(lst, `length<-`,                    max(lengths(lst)))), stringsasfactors=false) names(d1) <- paste0("p", seq_along(d1)) 

if using packages, stri_list2matrix convenient function stringi

library(stringi) stri_list2matrix(lst, byrow=true) 

data

lst <- list("argentina", c("buenos ", "aires", "buenos ", "aires",     "argentina"  ), c("argentina", "argentina"), c("argentina", "argentina"),      "argentina", "argentina") 

Comments