Data.table: [R-Forge # 5580] las funciones invisibles se vuelven visibles en la expresión j

Creado en 8 jun. 2014  ·  8Comentarios  ·  Fuente: Rdatatable/data.table

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 .

bug wontfix

Comentario más útil

No, es porque R fuerza internamente la visibilidad en [ diferencia de with() . Consulte la pregunta frecuente 2.22 .

Todos 8 comentarios

@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 .

¿Fue útil esta página
0 / 5 - 0 calificaciones