2016-03-10 12 views
5

Ortam panelindeki bir data.table nesnesi, := yöntemini kullanarak yeni değişkenler eklendikten sonra önizlemesini güncelleştirmeyecektir. Ancak str(dt), doğru ayrıntıları gösterir ve dt yeni bir değişkene atama Ortam panelinde doğru önizlemeyle sonuçlanır.data.table nesneleri Rstudio ortam panelinde güncelleştirilmiyor

dt <- data.table(x = 1:10, 
       y = log(1:10), 
       z = (1:10)**2) 
dt[, a := x + y, ] 
dt[, b := x + z, ] 
str(dt) 
d <- dt 

Bu, bilinen bir hata tasarımına mı bağlı, yoksa bunun bir çözümü var mı? Davranış ilginç ve bunun gerçekleşmesinin sebebini merak ediyorum.

+2

Yine de, ortamdaki nesnelerin listesini yine de yenileyebilirsiniz. – lukeA

+3

Fyi, istediğiniz 'data.table (x = 1:10, y = ...)' yerine 'as.data.table (cbind (...))' – Frank

cevap

1

RStudio yalnızca nesne oluşturulduğunda veya yenileme düğmesine bastığınızda (@lukeA işaret ettiği gibi) ortam panelini güncelleştirir gibi görünüyor.
hata burada iyi bir kelime olduğunu düşünmüyorum, yalnızca belirli bir senaryoda nesnelerin yapısını güncelleştirmek ve her bir kullanıcının aramasının ne olduğunu araştırmak için RStudio'nun bir tasarım konsepti olabilir, yenileme gerekip gerekmediğine karar verebilirsiniz.
Ancak, RStudio kullanıcıları için istenen bir davranış değil, ancak numaralı hata raporunun hata raporundan daha iyi algılanması gerektiğini düşünüyorum.

Bu davranış, bir yan etki olarak dizin oluşturan dir.create() ile uyumludur. Ayrıca çalışma dizini panelinde her zaman güncellenmez.

+0

Teşekkürler, bu kesinlikle karışıklığımı açığa çıkardı . Bu ilginç bir kavramdır. Ortam panelindeki (kullandığım) diğer her nesne değiştiğinde güncellenir/yenilenir. – Mitch

+0

@Mitch Bir bellek içi kopya oluştururken güncellemenize veya referans ile güncellemeye bağlı olduğuna inanıyorum. İkincisi verimlilik için kullanılır, bu nedenle meta veriler için gerçekten yararlı değildir, ancak veriler için kesinlikle yararlıdır. – jangorecki