2012-08-25 23 views
48

Yaklaşık 10.000 öğeden oluşan bir listede R listesi var. Sadece 5, 7 ve 9. öğeleri seçmek istediğimi söyle. Bunu bir döngü olmadan nasıl yapacağımı bilmiyorum.Bir listeden birden çok öğe seçin

mylist[[c(5,7,9]] gibi bir şey yapmak istiyorum ama bu işe yaramıyor. Ayrıca lapply işlevini denedim, ancak bu da çalışamadı.

+10

"?" [["': * Arasındaki en önemli ayrım "[', '[[' ve '$' arasındaki en önemli ayrım, diğer ikisi arasında birden fazla öğe seçebilir. tek bir eleman seçin * – A5C1D2H2I1M1N2O1R2T1

+0

@ mrdwab'ın yorumuyla ilgili olarak, bu R'nin vektörlü dünyası, "tek bir element" bir vektör olabilir! – seancarmody

cevap

93

mylist[c(5,7,9)] bunu yapmalıdır.

Sonuç listesinin alt listeleri olarak döndürülen alt listeleri istersiniz; Bunu yapmak için [[]] (veya daha ziyade, işlev [[) kullanmazsınız - Yorumlar hakkında yorumda bulunduğundan, [[ öğeyi yakalar.

+6

Sadece biraz daha ayrıntı eklemek için - "[" bir alt listeyi döndürecektir, böylece onunla birden fazla giriş kullanabilmeniz mantıklıdır. "[[" aslında öğenin kendisini kapacaktır, böylece bir liste döndürmediğinden yalnızca tek bir girdi alabilir (öğenin kendisi bir liste değilse). – Dason

+0

Bu vektör mü? İki listem var: 'b' 10 milyon eleman içerir. 'filter_bins', her öğenin bir dizin olduğu bir listedir. bu nedenle aynı dizin ile b' 'sadece elde elemanları, bir ' lapply (filter_bins, fonksiyon (x) b [x,]) ' çok b [x], sadece bir satır alt (döner sahip her elemanın filtre_bins tarafından seçildiği). Umarım bu mantıklıdır. Sorum şu ki bu çok yavaş – masfenix

+0

@masfenix detaylarını açıklayan yeni bir soru oluşturmanız gerekir. –

İlgili konular