2016-03-10 7 views
5

Ein data.table-Objekt im Umgebungsfenster wird seine Vorschau nicht aktualisieren, nachdem neue Variablen mit der :=-Methode hinzugefügt wurden. str(dt) zeigt jedoch die korrekten Details und die Zuweisung dt an eine neue Variable führt zu der richtigen Vorschau in der Umgebung.data.table-Objekte werden im Rstudio-Umgebungsfenster nicht aktualisiert

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 

Ist dies ein bekannter Fehler oder gibt es eine Lösung? Das Verhalten ist interessant und ich bin neugierig, warum das so ist.

+2

Sie können die Liste der Objekte in der Umgebung jedoch weiterhin manuell aktualisieren. – lukeA

+3

Fyi, du willst 'data.table (x = 1:10, y = ...)' anstelle von 'as.data.table (cbind (...))' – Frank

Antwort

1

Es sieht so aus, als ob RStudio nur das Umgebungsfenster aktualisiert, wenn Objekte erstellt werden oder wenn Sie auf die Schaltfläche zum Aktualisieren klicken (wie von @lukeA angezeigt).
Ich glaube nicht, Bug ist gutes Wort hier, es kann ein Design-Konzept von RStudio sein, um Struktur von Objekten nur in bestimmten Szenario zu aktualisieren, und nicht untersuchen, was jeder Aufruf des Benutzers ist, um zu entscheiden, ob Aktualisierung erforderlich ist.
Aber ich verstehe, es ist nicht wünschenswert Verhalten für RStudio-Benutzer, aber ich denke, es passt besser als Feature-Anfrage zu erkennen, durch Referenzaufrufe als Fehlerbericht.

Dieses Verhalten ist konsistent im Vergleich zu dir.create(), die Verzeichnis als Nebeneffekt erstellt. Es wird auch nicht immer im Arbeitsverzeichnis Panel aktualisiert.

+0

Danke, das hat definitiv geholfen, meine Verwirrung zu klären . Es ist ein interessantes Konzept. Jedes andere Objekt im Umgebungsfenster (das ich verwendet habe) wird aktualisiert/aktualisiert, wenn es geändert wird. – Mitch

+0

@Mitch Ich glaube, es hängt davon ab, ob Sie eine In-Memory-Kopie aktualisieren oder durch Referenz aktualisieren. Letzteres wird für die Effizienz verwendet, also nicht wirklich nützlich für Metadaten, aber definitiv nützlich für Daten. – jangorecki

Verwandte Themen