Rでリストをデータフレームに変換する方法
R でリストをデータ フレームに変換したい場合がよくあります。このチュートリアルでは、これを行うための 3 つの異なる方法について説明します。
方法 1: R ベース
次のコード スニペットは、ベース 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
この例では、 sapply がリストを行列に変換し、次にdata.frame が行列をデータ フレームに変換します。最終結果は、2 行 5 列のデータ フレームになります。
方法 2: データテーブル
次のコード スニペットは、 data.tableライブラリのrbindlist関数を使用して、2 つのネストされたリストのリストを 2 行 3 列のデータ フレームに変換する方法を示しています。
#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
これにより、2 行 3 列のデータ テーブルが作成されます。このデータ テーブルをデータ フレームに変換する場合は、単にas.data.frame(DT)を使用できます。
非常に大規模なデータ セットを操作している場合、この方法は前の方法よりも速くリストをデータ フレームに変換します。
方法 3: Dplyr
次のコード スニペットは、 dplyrライブラリのbind_rows関数を使用して、2 つのネストされたリストのリストを 2 行 3 列のデータ フレームに変換する方法を示しています。
#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
これにより、2 行 3 列のデータ フレームが作成されます。
また、この方法は、大規模なデータセットを操作する場合、基本 R よりも高速に実行される傾向があります。