Hoe een lijst naar een dataframe te converteren in r
Er zijn veel gevallen waarin u een lijst naar een dataframe in R wilt converteren. In deze tutorial worden drie verschillende manieren uitgelegd om dit te doen.
Methode 1: R-gebaseerd
Het volgende codefragment laat zien hoe u een lijst naar een dataframe converteert met alleen basis R:
#create list my_list <- list(letters[1:5], letters[6:10]) my_list [[1]] [1] "a" "b" "c" "d" "e" [[2]] [1] "f" "g" "h" "i" "j" #convert list to data frame data.frame(t(sapply(my_list,c))) X1 X2 X3 X4 X5 1 abcde 2 fghij
In dit voorbeeld converteert sapply de lijst naar een matrix en vervolgens converteert data.frame de matrix naar een dataframe. Het eindresultaat is een dataframe met twee rijen en vijf kolommen.
Methode 2: Gegevenstabel
Het volgende codefragment laat zien hoe u een lijst van twee geneste lijsten kunt converteren naar een dataframe met twee rijen en drie kolommen met behulp van de rbindlist- functie van de data.table- bibliotheek:
#load data.table library library(data.table) #create list my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3), b = list(var1 = 4, var2 = 5, var3 = 6)) my_list $a $a$var1 [1] 1 $a$var2 [1] 2 $a$var3 [1] 3 $b $b$var1 [1] 4 $b$var2 [1] 5 $b$var3 [1] 6 #convert list to data frame rbindlist(my_list) var1 var2 var3 1:1 2 3 2:4 5 6
Dit resulteert in een gegevenstabel met twee rijen en drie kolommen. Als u deze gegevenstabel naar een dataframe wilt converteren, kunt u eenvoudigweg as.data.frame(DT) gebruiken.
Deze methode converteert een lijst sneller naar een dataframe dan de vorige methode als u met een zeer grote dataset werkt.
Methode 3: Dplyr
Het volgende codefragment laat zien hoe u een lijst van twee geneste lijsten kunt converteren naar een dataframe met twee rijen en drie kolommen met behulp van de functie bind_rows van de dplyr- bibliotheek:
#loadlibrary library(dplyr) #create list my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3), b = list(var1 = 4, var2 = 5, var3 = 6)) my_list $a $a$var1 [1] 1 $a$var2 [1] 2 $a$var3 [1] 3 $b $b$var1 [1] 4 $b$var2 [1] 5 $b$var3 [1] 6 #convert list to data frame bind_rows(my_list) # A tibble: 2 x 3 var1 var2 var3 1 1 2 3 2 4 5 6
Dit resulteert in een dataframe met twee rijen en drie kolommen.
Deze methode heeft ook de neiging sneller te presteren dan basis R bij het werken met grote datasets.