GÜNCELLEME: Eski soru ... o Feb içinde data.table v1.5.3 tarafından çözüldü 2011.R: data.table kullanırken x [y] 'yi kullanırken y sütunlarını nasıl alabilirim?
, ben data.table
paketi kullanmak çalışıyorum ve gerçekten hızlandırıcılar gibi alıyorum ama Ben x[y, <expr>]
nerede x
ve y
aynı anahtarla "veri tabloları" dir yapmak bu hata kelimler ve <expr>
hem x
ve y
sütun adlarını içeren am:
require(data.table)
x <- data.table(foo = 1:5, a = 5:1)
y <- data.table(foo = 1:5, boo = 10:14)
setkey(x, foo)
setkey(y, foo)
> x[y, foo*boo]
Error in eval(expr, envir, enclos) : object 'boo' not found
sayfamız TE ... Yukarıdaki örnekte arıyorum işlevselliği netleştirmek için: Ancak data.table
SSS aşağıda ekstresi göre
with(merge(x,y), foo*boo)
, bu çalışmış olmalıdır: Aşağıdaki eşdeğer yapmak gerekir :
Son olarak, x [y] y sütunları dönmez olsa aslında j ifadede y sütunları kullanabilirsiniz olarak görünür halde. Bu, devralınan kapsamın birleşimiyle anlamına gelir. Neden , sadece sütunlarının birleşimini x ve y'den döndürüp, ardından ifadelerini çalıştırıyor? Kodun yeterliliğine ve program için daha hızlı olan 'a kadar kaynar. x [y, foo boo] yazdığınızda, data.table otomatik olarak , j ifadesini, kullandığı sütunlarını görmek için inceler. Yalnızca veya grubu, yalnızca bu sütunları alt gruplara ayıracaktır. Bellek yalnızca j kullanım alanları için oluşturulmuştur. Foo'nun x olduğunu ve 'un y konumunda olduğunu (y içinde diğer 20 sütunla birlikte) diyelim. X [y, foo boo] programına göre daha hızlıdır ve birleştirme adımından daha hızlı çalışıp daha sonra adımlı başka bir alt kümedir.
Benzer bir soruna hitap eden this question'un farkındayım, ancak tatmin edici bir şekilde çözülmemiş gibi görünüyor. Neyi kaçırdığımı veya yanlış anlaşıldığımı bilen var mı? Teşekkürler.
GÜNCELLEME: Veri tablosu yardım listesi ve paket yazarı (Matta Dowle) replied'dan gerçekten yukarıda bahsedilen SSS'nin yanlış olduğunu sordum, dolayısıyla kullandığım sözdizimi şu an çalışmaz; Ben x[y,...]
yaptığımda j
(yani ikinci) bağımsız değişkeninde y
sütunları.
Ama bir süre önce sordun ve Şubat 2011'de CRAN'a sunulan v1.5.3 tarafından ele alındı. Lütfen bunun NEWS, yeni? Data.table ve düzeltilmiş SSS olduğunu görün. –
@Matthew, evet, en son sürüm tarafından ele alındığını biliyorum, ve burada işaret ettiğine sevindim, bu yüzden başkalarına açık. –