割り当てるとき
listz <- list(data.frame("id" = 1:3, "hat" = 1:3),
data.frame("id" = 4:6, "hat" = 4:6))
以前に として定義されていたオブジェクトを置き換えていますlistz
。これは新しいオブジェクトであり、その名前の以前のオブジェクトとは無関係です。
したがって、この場合、リストを初期化する必要はありません
リストの名前を設定するための(少なくとも)4つのオプションがあります
オプション1 -setNames
# Option 1 - using setNames
listz <- setNames(list(data.frame("id" = 1:3, "hat" = 1:3),
data.frame("id" = 4:6, "hat" = 4:6)), listzNames)
オプション 2 - 名前を付ける
# Option 2 - naming the list as you go
listz <- list(frame1 = data.frame("id" = 1:3, "hat" = 1:3),
frame2 = data.frame("id" = 4:6, "hat" = 4:6))
オプション 3 -Hmisc
およびllist
# If your data.frames already exist
# use the llist function in Hmisc, which names the list
# using the names of the object in each element
library(Hmisc)
frame1 <- data.frame("id" = 1:3, "hat" = 1:3)
frame2 <- data.frame("id" = 4:6, "hat" = 4:6)
listz <- llist(frame1,frame2)
オプション 4 - setNames と get を使用して既存のもの
# if your data.frames already exist in the global environment then
# you can use
listz <- setNames(lapply(listzNames, get),listzNames)
オプション5リストの初期化(私はこれが好きではありません)
listz <- vector("list",2)
names(listz) <- listzNames
listz[[1]] <- data.frame("id" = 1:3, "hat" = 1:3)
listz[[2]] <- data.frame("id" = 4:6, "hat" = 4:6)
このオプションは好きではありません。より多くの入力が必要になるため、エラーが発生する可能性が高くなります。
についての注意lapply
lapply
すべての名前を保持します
lapply(listz,head,n=1)
#$frame1
# id hat
#1 1 1
#
#$frame2
# id hat
#1 4 4