2013-08-29 30 views
6

oluşturmaya çalışırken data.table içinde yeni bir sütun oluşturmak ve aynı anda varolan bir sütunu güncellemek mümkün mü? Aşağıdaki çalışmadı. Teşekkürler. Segfault yakalandıR data.table segfault bir sütunu güncellemeye ve başka bir

library(data.table) 
dt <- data.table(x=runif(4), y=runif(4), z=c("x","x","y","y")) 
dt[, c("x", "y") := list(x[1], y[1]), by=z]  # works 
dt[, c("x", "newx") := list(x[1], y[1]), by=z] 

:

address 0x20000010, cause 'memory not mapped' 

traceback:

1: [.data.table(dt, , :=(c("x", "newx"), list(x[1], y[1])), by = z) 
2: dt[, :=(c("x", "newx"), list(x[1], y[1])), by = z] 
+0

Evet, bunu daha önce de yaptım. Sanırım hata yapmaktan vazgeçmekten kaçındım. – Frank

cevap

5

Evet. Ama şu düzeltmeyi almak için R-Forge'dan v1.8.9 gerekir:

o Karıştırma by = ekleyerek ve bir DT'nin [, := (existingCol = ..., newCol = ...) içine güncellenmesi. ..] şimdi hata veya segfault olmadan çalışıyor, # 2778 ve # 2528. Arunkumar Srinivasan'a, 'u bildirdiği ve güzel tekrarlanabilir örnekler için teşekkürler. Testler eklendi.

V1.8.9'daki diğer değişiklikler için bkz. latest NEWS (günceldir).

+2

V1.8.9 için .tar.gz dosyası nerede bulunur? –

+5

@DWin R-Forge'da, burada: 'R-Forge.R-project.org/src/contrib/data.table_1.8.9.tar.gz'. Doğrudan aşağıdaki gibi bir şeyle yükleyebilirsiniz: 'install.packages (" data.table ", repos =" http://R-Forge.R-project.org ", type =" source ")'. –

+0

Teşekkürler. İnan bana, kaynaktan nasıl kurulacağını biliyorum. Ve genellikle paketleri bulabilirim, ancak mevcut R-Forge kurulumu her zamanki arama stratejilerimi sinirlendiriyor gibi görünüyor. R-Forge'da paketlerin paketlenmiş versiyonu için standart bir yer var mı? –

İlgili konular