2015-10-01 25 views
9

Bazı veri tablolarının satırlarını alt gruplara ayırmak istiyorum. Şunun gibi:Kullanılmadan alt veri tablosu <-

# load data 
    data("mtcars") 

# convert to data table 
    setDT(mtcars,keep.rownames = T) 

# Subset data 
    mtcars <- mtcars[like(rn,"Mer"),] ; or 
    mtcars <- mtcars[mpg > 20,] 

Ancak, büyük bir veri seti ile çalışıyorum ve bunu verilerin bir kopyasını yapar çünkü verimli hafıza olmadığı, <- kullanmaktan kaçınmak istedi.

Bu doğru mu? Filtrelenmiş verileri <- olmadan güncellemek mümkün mü?

+0

Veriyi bir değişkene atamadan nasıl güncellersiniz? Sonunda tüm işlemlerden sonra değişiklikler bir değişkene atanmalıdır. –

+0

Saklamak istemiyorsanız, neden verileri alt gruplara ayırmak istiyorsunuz? Sadece geçici olarak ihtiyacınız var mı? Ya da sadece alt kümeye ihtiyacınız var mı ve orijinali bırakmak mı istiyorsunuz? Bunu yapmak için etkili bir yol mu arıyorsunuz? – RHA

+0

Bence imkansızı istiyorsun. Ancak bu GH üzerinde ilginç bir FR olabilir. Ama inanıyorum ki böyle bir şeyin hayata geçirilmesi için bir * çok fazla * geliştirme gerektirecektir. –

cevap

7

Ne soruyorsunuz referansı ile satırları silecektir.

Bu henüz mümkün değil, ancak #635 için FR var. Bunu önlemek olamaz şimdilik böylece

o zaman (bellek içi) sizin data.table alt kümesini kopyalamanız gerekmektedir kadar

, kopya alt kümesi ( i arg) ile birleştirilir <- (veya =) tarafından yapılır.

bir şekilde yardımcı olacak birçok kez operasyon önceden tanımlamak ve değerlendirme geciktirmeyin, ayrıca önceden tanımlanmış nesneleri yeniden dil nesneler üzerinde işlem yapabiliyorsanız:

mtcars_sub <- quote(mtcars[like(rn,"Mer")]) 
mtcars_sub2 <- quote(eval(mtcars_sub)[mpg > 20]) 
eval(mtcars_sub2) 
#   rn mpg cyl disp hp drat wt qsec vs am gear carb 
# 1: Merc 240D 24.4 4 146.7 62 3.69 3.19 20.0 1 0 4 2 
# 2: Merc 230 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2 

BTW. data.table alt kümesini dt[x==1,] gibi orta virgül kullanmanız gerekmiyorsa dt[x==1] kullanabilirsiniz.

İlgili konular