Data.table: [R-Forge # 5580] funções invisíveis tornam-se visíveis na expressão j

Criado em 8 jun. 2014  ·  8Comentários  ·  Fonte: Rdatatable/data.table

Enviado por: Eduard Antonyan; Atribuído a: Ninguém; Link R-Forge

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

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

Isso é muito irritante ao usar, por exemplo, boxplot .

bug wontfix

Comentários muito úteis

Não, é porque R força internamente a visibilidade em [ ao contrário de with() . Consulte a FAQ 2.22 .

Todos 8 comentários

@eantonya, você poderia fornecer um exemplo de uso com boxplot ?

O problema aqui está muito relacionado a := , conforme explicado na FAQ 2.22 .

O melhor que podemos fazer é retornar invisivelmente _iff_ fn() retorna um data.table . Caso contrário, teremos que modificar _todos_ os métodos de impressão da mesma maneira que print.data.table faz inteligentemente usando .global$print .

Eu adicionei o rótulo 'não corrige' por enquanto. Como é um problema com a forma como a base R força a visibilidade em [ . Se você concordar, podemos encerrar assim (a menos que haja uma alternativa que possamos apresentar).

Marcando @mattdowle também.

Acho que pode ser idêntico ao # 1471. Acabei de encontrar isso.

É uma pena que R não retorne algo com um atributo "invisible" quando for o resultado de invisible . Isso tornaria tudo mais fácil.

Ligando de volta para http://stackoverflow.com/a/36093766/403310 que

Hmm. Notei que with(dt, fn()) _não_ imprime a saída. Acho que isso está relacionado a todo o problema de .global$print mais do que qualquer coisa, então.

Não, é porque R força internamente a visibilidade em [ ao contrário de with() . Consulte a FAQ 2.22 .

A mesma supressão de impressão global que funciona com := funcionar aqui?

de acordo com o comentário de Arun, não podemos fazer muito sobre R [ forçando a visibilidade, a solução é envolver sua expressão data.table em invisible .

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jimhester picture jimhester  ·  3Comentários

jangorecki picture jangorecki  ·  3Comentários

rafapereirabr picture rafapereirabr  ·  3Comentários

DavidArenburg picture DavidArenburg  ·  3Comentários

jameslamb picture jameslamb  ·  3Comentários