txt tuberias salida redireccionamiento pipes operadores operador informacion guardar filtros ejemplos comando archivo r console sink

tuberias - ¿Es posible redirigir la salida de la consola a una variable?



redireccionamiento unix (2)

Creo que los results <- capture.output(...) es lo que necesita (es decir, usar el file=NULL predeterminado file=NULL argumento file=NULL ). sink(textConnection("results")); ...; sink() sink(textConnection("results")); ...; sink() debería funcionar, pero como dice capture.output() , capture.output() es:

Relacionado con ''sumidero'' de la misma manera que ''con'' está relacionado con ''adjuntar''.

... lo que sugiere que capture.output() generalmente será mejor, ya que está más contenido (es decir, no tiene que acordarse de terminar el sink() ).

Si desea enviar la salida de varias declaraciones a una variable, puede ajustarlas entre paréntesis {} , pero si el bloque es lo suficientemente complejo, sería mejor usar sink() (o hacer que su código sea más modular envolviéndolo). funciones).

En R, me pregunto si es posible redireccionar temporalmente la salida de la consola a una variable.

ps Hay algunos ejemplos en la web sobre cómo usar sink() para redirigir la salida a un nombre de archivo, pero ninguno que pueda encontrar mostrando cómo redirigir a una variable.

pps La razón por la que esto es útil, en la práctica, es que necesito imprimir una parte de la salida predeterminada de la consola desde algunas de las funciones integradas en R.


Para el registro, de hecho, es posible almacenar la salida estándar en una variable con la ayuda de una conexión gratuita sin tener que llamar a capture.output , por ejemplo, cuando desea guardar los resultados y la capture.output . Ejemplo:

  1. Prepare la variable para la salida R desviada:

    > stdout <- vector(''character'') > con <- textConnection(''stdout'', ''wr'', local = TRUE)

  2. Desvía la salida:

    > sink(con)

  3. Hacer algunas cosas

    > 1:10

  4. Termina el desvío:

    > sink()

  5. Cierre la conexión temporal:

    > close(con)

  6. Compruebe los resultados:

    > stdout [1] " [1] 1 2 3 4 5 6 7 8 9 10"