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
.
@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
.
Comentários muito úteis
Não, é porque R força internamente a visibilidade em
[
ao contrário dewith()
. Consulte a FAQ 2.22 .