Data.table: [R-Forge # 5580] Unsichtbare Funktionen werden im j-Ausdruck sichtbar

Erstellt am 8. Juni 2014  ·  8Kommentare  ·  Quelle: Rdatatable/data.table

Eingereicht von: Eduard Antonyan; Zugewiesen an: Niemand; R-Forge Link

fn = function() {invisible(1:5)}

dt[, fn()]
# [1] 1 2 3 4 5

Dies ist ziemlich ärgerlich, wenn Sie zB boxplot .

bug wontfix

Hilfreichster Kommentar

Nein, es liegt daran, dass R intern die Sichtbarkeit von [ erzwingt, im Gegensatz zu with() . Siehe FAQ 2.22 .

Alle 8 Kommentare

@eantonya Könnten Sie eine Beispielverwendung mit boxplot angeben ?

Das Problem hier hängt sehr stark mit := , wie in FAQ 2.22 erläutert.

Das Beste, was wir tun können, ist, unsichtbar zurückzugeben _iff_ fn() gibt ein data.table . Andernfalls müssen wir _all_ die Druckmethoden auf die gleiche Weise ändern, wie es print.data.table mit .global$print .

Ich habe das Label "wird nicht repariert" für jetzt hinzugefügt. Da es ein Problem mit der Art und Weise ist, wie Basis R die Sichtbarkeit auf [ erzwingt. Wenn Sie damit einverstanden sind, können wir dies als solches schließen (es sei denn, wir können eine Alternative finden).

Markieren Sie auch

Ich denke, das könnte mit # 1471 identisch sein. Ich hab das hier gerade gefunden.

Es ist schade, dass R nichts mit einem "invisible" -Attribut zurückgibt, wenn es das Ergebnis von invisible . Das würde das einfach machen.

Link zurück zu http://stackoverflow.com/a/36093766/403310, der hier verlinkt. Wir könnten FAQ 2.18 (die Lösung dort hat bei mir nicht funktioniert, als ich sie gerade getestet habe) sowie 2.22 erneut aufrufen und mehr als ein Jahr ist vergangen, seit wir das letzte Mal nachgesehen haben, sodass möglicherweise ein weiterer Versuch fällig ist.

Hmm. Ich habe gerade bemerkt, dass with(dt, fn()) die Ausgabe nicht druckt. Ich denke, dies hängt mehr als alles andere mit dem gesamten Problem von .global$print .

Nein, es liegt daran, dass R intern die Sichtbarkeit von [ erzwingt, im Gegensatz zu with() . Siehe FAQ 2.22 .

Kann hier nicht dieselbe globale Druckunterdrückung funktionieren, die mit := funktioniert?

Laut Arun-Kommentar können wir nicht viel dagegen tun, dass Rs [ die Sichtbarkeit erzwingt. Die Lösung besteht darin, den Ausdruck data.table in invisible zu verpacken.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen