- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Convert list with varying number of elements into a data frame.
To convert list with varying number of elements into a data frame in R, we can use stri_list2matrix function of stringi package along with as.data.frame function.
For Example, if we have a list called LIST that contains varying number of elements then we can convert it into a data frame by using the below mentioned command −
as.data.frame(t(stri_list2matrix(LIST)))
Example 1
Following snippet creates a sample list −
List1<- list(x1=rpois(2,5),x2=rpois(1,3),x3=rpois(2,8),x4=rpois(4,5),x5=rpois(2,2), x6=rpois(2,1),x7=rpois(3,8),x8=rpois(2,2),x9=rpois(1,5),x10=rpois(4,5)) List1
The following list is created −
$x1 [1] 1 3 $x2 [1] 1 $x3 [1] 8 13 $x4 [1] 1 6 4 3 $x5 [1] 1 1 $x6 [1] 0 1 $x7 [1] 7 14 11 $x8 [1] 2 3 $x9 [1] 6 $x10 [1] 2 6 2 4
To load stringi package and convert List1 into a data frame on the above created list, add the following code to the above snippet −
List1<- list(x1=rpois(2,5),x2=rpois(1,3),x3=rpois(2,8),x4=rpois(4,5),x5=rpois(2,2), x6=rpois(2,1),x7=rpois(3,8),x8=rpois(2,2),x9=rpois(1,5),x10=rpois(4,5)) library(stringi) df1<-as.data.frame(t(stri_list2matrix(List1))) df1
Output
If you execute all the above given snippets as a single program, it generates the following Output −
V1 V2 V3 V4 1 1 3 <NA <NA 2 1 <NA <NA <NA 3 8 13 <NA <NA 4 1 6 4 3 5 1 1 <NA <NA 6 0 1 <NA <NA 7 7 14 11 <NA 8 2 3 <NA <NA 9 6 <NA <NA <NA 10 2 6 2 4
Example 2
Following snippet creates a sample list −
List2<- list(rnorm(2),rnorm(1),rnorm(3),rnorm(2),rnorm(2),rnorm(1),rnorm(2),rnorm(3),rnorm(2),rnorm(3)) List2
The following list is created −
[[1]] [1] -0.03506701 -0.55296351 [[2]] [1] 0.005158427 [[3]] [1] -0.7572075 -0.3224273 1.2230982 [[4]] [1] 2.515718 0.459838 [[5]] [1] 0.2281859 1.4827560 [[6]] [1] -1.437357 [[7]] [1] -0.6724493 -0.8615715 [[8]] [1] -0.3267674 0.3821203 1.3682284 [[9]] [1] -1.1927376 0.6963071 [[10]] [1] -1.8503924 -0.8548566 0.3238128
To convert List2 into a data frame on the above created list, add the following code to the above snippet −
List2<- list(rnorm(2),rnorm(1),rnorm(3),rnorm(2),rnorm(2),rnorm(1),rnorm(2),rnorm(3),rnorm(2),rnorm(3)) df2<-as.data.frame(t(stri_list2matrix(List2))) df2
Output
If you execute all the above given snippets as a single program, it generates the following Output −
V1 V2 V3 1 -0.0350670057960313 -0.552963507178783 <NA 2 0.00515842713500514 <NA <NA 3 -0.7572075156728 -0.32242727820248 1.22309822228101 4 2.51571828926956 0.459838038672105 <NA 5 0.228185881424775 1.48275597834426 <NA 6 -1.4373572339596 <NA <NA 7 -0.672449323899707 -0.861571465667793 <NA 8 -0.326767408109411 0.38212030846509 1.36822838416228 9 -1.19273760057282 0.696307135245131 <NA 10 -1.85039242746415 -0.854856579078842 0.323812773976994