Enviado por: Eduard Antonyan; Asignado a: Nadie; Enlace R-Forge
fn = function() {invisible(1:5)}
dt[, fn()]
# [1] 1 2 3 4 5
Esto es bastante molesto cuando se usa, por ejemplo, boxplot
.
@eantonya, ¿ podría proporcionar un ejemplo de uso con boxplot
?
El problema aquí está muy relacionado con :=
, como se explica en la pregunta frecuente 2.22 .
Lo mejor que podemos hacer es devolver de forma invisible _iff_ fn()
devuelve un data.table
. De lo contrario, tendremos que modificar _todos_ los métodos de impresión de la misma manera que print.data.table
hace inteligentemente usando .global$print
.
Agregué la etiqueta "no se solucionará" por ahora. Ya que es un problema con la forma en que la base R fuerza la visibilidad en [
. Si está de acuerdo, podemos cerrar esto como tal (a menos que se nos ocurra una alternativa).
Etiquetando @mattdowle también.
Creo que esto puede ser idéntico al # 1471. Acabo de encontrar esto.
Es una lástima que R no devuelva algo con un atributo "invisible"
cuando es el resultado de invisible
. Eso haría esto fácil.
Vuelve a http://stackoverflow.com/a/36093766/403310 que enlaza aquí. Podríamos volver a visitar la pregunta frecuente 2.18 (la solución allí no funcionó para mí cuando la probé), así como la 2.22 y ha pasado más de un año desde la última vez que miramos, por lo que es posible que deba intentarlo de nuevo.
Mmm. Acabo de notar que with(dt, fn())
_no_ imprime la salida. Supongo que esto está relacionado con todo el problema .global$print
más que nada, entonces.
No, es porque R fuerza internamente la visibilidad en [
diferencia de with()
. Consulte la pregunta frecuente 2.22 .
¿No puede funcionar aquí la misma supresión de impresión global que funciona con :=
?
según el comentario de Arun, no podemos hacer mucho acerca de la visibilidad forzada de R [
, la solución es envolver su expresión data.table en invisible
.
Comentario más útil
No, es porque R fuerza internamente la visibilidad en
[
diferencia dewith()
. Consulte la pregunta frecuente 2.22 .