Data.table: [R-Forge # 5580] les fonctions invisibles deviennent visibles dans l'expression j

Créé le 8 juin 2014  ·  8Commentaires  ·  Source: Rdatatable/data.table

Soumis par: Eduard Antonyan; Attribué à: Personne; Lien R-Forge

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

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

C'est assez ennuyeux lorsque vous utilisez par exemple boxplot .

bug wontfix

Commentaire le plus utile

Non, c'est parce que R force en interne la visibilité sur [ contrairement à with() . Voir FAQ 2.22 .

Tous les 8 commentaires

@eantonya pourriez-vous fournir un exemple d'utilisation avec boxplot ?

Le problème ici est très lié à := , comme expliqué dans la FAQ 2.22 .

Le mieux que nous puissions faire est de renvoyer de manière invisible _iff_ fn() renvoie un data.table . Sinon, nous devrons modifier _toutes_ les méthodes d'impression de la même manière que print.data.table fait intelligemment en utilisant .global$print .

J'ai ajouté l'étiquette «ne résoudra pas» pour le moment. Comme c'est un problème avec la façon dont la base R force la visibilité sur [ . Si vous êtes d'accord, nous pouvons le fermer en tant que tel (sauf s'il existe une alternative que nous pouvons proposer).

Balisage @mattdowle également.

Je pense que cela peut être identique à # 1471. Je viens de trouver ça.

C'est dommage que R ne retourne pas quelque chose avec un attribut "invisible" quand c'est le résultat de invisible . Cela rendrait cela facile.

Lien vers http://stackoverflow.com/a/36093766/403310 qui renvoie ici. Nous pourrions revoir la FAQ 2.18 (la solution là-bas ne fonctionnait pas pour moi quand je viens de la tester) ainsi que 2.22 et plus d'un an s'est écoulé depuis notre dernière recherche, donc une autre tentative peut être due.

Hmm. Je viens de remarquer que with(dt, fn()) _n'affiche pas_ la sortie. Je suppose que cela est lié à l'ensemble du problème .global$print plus que tout.

Non, c'est parce que R force en interne la visibilité sur [ contrairement à with() . Voir FAQ 2.22 .

La même suppression d'impression globale qui fonctionne avec := fonctionner ici?

selon le commentaire d'Arun, nous ne pouvons pas faire grand-chose à propos du [ de R forçant la visibilité, la solution consiste à envelopper votre expression data.table dans invisible .

Cette page vous a été utile?
0 / 5 - 0 notes