2013-02-25 14 views
5

Veri kümeleri listesinde okudum ve buna n denir. Ne yapmak istediğim, n ve satırdaki veri kümelerinin bir alt kümesini R'de bir araya getirmektir. rbind(n)'a gitmeye çalıştığımda, bu yalnızca öğeleri yerleştirmek yerine veri kümelerinin tüm adlarının veri çerçevesini verir. Her bir veri kümesinin altında. Yapmak istediğim, ortak bir adı paylaşan veri kümelerinin alt kümelerini bağlamaktır. Örneğin, veri kümelerinin 18'i "4." ile başlar. ve hepsini bir araya getirmek istiyorum. Bunu yapmanın kolay bir yolu var mı?Satır Bir Veri Küme Grubu Bağlama?

cevap

11

Yapmak istediğiniz ile aynı olmak istemiyor rbind(n[[1]],n[[2]],...) olduğunu. Bu yazmak gerekmez

, oluşturmak do.call kullanmak ve istediğiniz komuta çalışacak bu call

do.call(rbind, n) 

yürütebilirsiniz. Ancak, bu yalnızca bu unsurları istiyorsanız notoriously slow

Sen kimin adı 4

rbindlist(n[grep(names(n), pattern = '^4')]) 
+0

Müthiş teşekkürler, tam olarak ne istediğimi yapıyor! Şimdi bunu bir alt küme için nasıl yapabilirim, "4." niçin isminde bir yerlerinde niçin gerçekte gitmeye gerek kalmadan listeden hangi numaralara bakmak gerekiyor? – user1836894

+0

@ user1836894 Bunlar, listenin öğelerinin adları mı? – mnel

+0

Evet öyle. Dosyaların bir listesi var ve bunlar dosyaların bir alt kümesine ait isimler. – user1836894

1

Eğer başlamak

library(data.table) 

rbindlist(n) 

çok daha hızlı aynı şeyi yapmak için data.table paketinden rbindlist kullanabileceği başka birçok dosyayı bir araya getirmeye çalışın, plyr paketinde rbind.fill işlevine gereksiniminiz olabilir (bir data.table eşdeğeri varsa don \ 't)

ll <- list(a=data.frame(x=1,y=2,z=1), 
     b= data.frame(x=2,y=3), 
     c=data.frame(x=3:4,y=5)) 

library(plyr) 
Reduce(rbind.fill,ll[c('a','b')]) ## subset by list names and 
            ## apply recursively using Reduce 
    x y z 
1 1 2 1 
2 2 3 NA 
+0

Bir rbind.fill eşdeğerini bilmiyorum, ancak bir şey http://stackoverflow.com/a/15017231/1385941 – mnel