Veri listesi dönüştürme bir veri içine Kare R Kare
Bir yerde gerçekten tek büyük veri bir çerçeveye dönüştürmek istediğiniz veri iletimi ile bir liste ile biten bir kod var.
Benzer ama daha karmaşık yapmaya çalıştığı earlier question gelen bazı noktalar var.
İşte ile başlıyorum bir örnek (bu örnek için fena halde basitleştirilmiş):
listOfDataFrames <- vector(mode = "list", length = 100)
for (i in 1:100) {
listOfDataFrames[[i]] <- data.frame(a=sample(letters, 500, rep=T),
b=rnorm(500), c=rnorm(500))
}
Şu anda bu kullanıyorum:
df <- do.call("rbind", listOfDataFrames)
******** EDİT
hoppala. "Önceki bir söz her şeyi berbat ettim. "öğrendiklerini uygulamak için acele Evet, unlist()
sadece düz yanlış. Söz konusu olan yukarıdaki düzenleme yapıyorum.
CEVAP
Bir diğer seçenek plyr bir fonksiyonu kullanmak için:
df <- ldply(listOfDataFrames, data.frame)
Bu orijinal daha yavaş
> system.time({ df <- do.call("rbind", listOfDataFrames) })
user system elapsed
0.25 0.00 0.25
> system.time({ df2 <- ldply(listOfDataFrames, data.frame) })
user system elapsed
0.30 0.00 0.29
> identical(df, df2)
[1] TRUE
Benim tahminim do.call("rbind", ...)
kullanarak (a) Bir veri yerine bir matris kullanmak gibi bir şey yapabilirsiniz bulacaksınız en hızlı yaklaşım olacak.çerçeveleri ve (b) son matrix önceden ayır ve büyüyen yerine atamak.
1 düzenleyin:
Hadley'in yorum, buraya göre değil, BOZUK rbind.fill
en son sürümü:
> system.time({ df3 <- rbind.fill(listOfDataFrames) })
user system elapsed
0.24 0.00 0.23
> identical(df, df3)
[1] TRUE
Bu rbind daha kolay, ve çok az daha hızlı (bu zamanlama çok çalışır tutun). Ve anladığım kadarıyla, the version of plyr
on github Bu daha bile hızlı.
'/veri birleştirme katılmak için ...
Kare veya matris veri?...
Nasıl bir veri tek bir sütunu yeniden ...
Bir veri ya da tüm bir sütunu kaldırma...
Veri dönüştürün.karakter etkenlerden K...