[R-br] capturar a saída do r

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[R-br] capturar a saída do r

R-br mailing list
Olá!

Gostaria de saber da possibilidade de capturar o [console] do R de forma dinâmica, como no software STATA - tudo o que sai na tela é copiado para um arquivo de log. Se houver interrupção, o log registra até o momento da interrupção.

E se fosse possível habilitar isso no R, me ajudaria muito!!!

Digo isso porque estou usando o comando [sink()]

sink(file = log_file, append = TRUE, type = "output")

Ocorre que o código lida com dados muito volumosos, dentro de um loop (com sub-loops também). Assim, na minha inocência tentei o seguinte - são 3 loops, um dentro do outro. 
Ao final do loop mais interno pus:

- desliga o [sink()], 
- fecha o arquivo de saida (log_file - no intuito de salvar o que já tem)
- abre o arquivo de saida (log_file)
- "liga" o [sink]


--------------------------
saida <- paste(....)  #monta o nome do arquivo de saida

log_file <- file(saida, open = "wt")
sink(file = log_file, append = TRUE, type = "output")  # começa a "captura"

LOOP1- inicio
    pegar referencia no [arquivo_a]
    LOOP2- inicio
         montar nome [arquivo_b]
         LOOP3(varrer [arquivo_b] - particionando) - inicio
              tarefa1
              tarefa2
                 :
              tarefa_n  

              sink() 
              close(log_file)
              log_file <- file(saida, open = "at")
              sink(file = log_file, append = TRUE, type = "output")

         LOOP3( varrer [arquivo_b] - particionando  ) - fim
    LOOP2 - fim 
LOOP1- fim  
--------------------------  


Mas parece que o arquivo continua fechando só  ao final do código, e com isso, se acaba a luz no meio do caminho, ou ocorre algum outro evento.... fico na saudade...

Tem remédio?????

------------------------
Cinara Santos
whatsApp (32) 9.8416-0441

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] capturar a saída do r

R-br mailing list
sink(). Dá uma olhada nessa função.

Em 19 de dez de 2018 11:13 AM, "Cinara Santos por (R-br)" <[hidden email]> escreveu:
Olá!

Gostaria de saber da possibilidade de capturar o [console] do R de forma dinâmica, como no software STATA - tudo o que sai na tela é copiado para um arquivo de log. Se houver interrupção, o log registra até o momento da interrupção.

E se fosse possível habilitar isso no R, me ajudaria muito!!!

Digo isso porque estou usando o comando [sink()]

sink(file = log_file, append = TRUE, type = "output")

Ocorre que o código lida com dados muito volumosos, dentro de um loop (com sub-loops também). Assim, na minha inocência tentei o seguinte - são 3 loops, um dentro do outro. 
Ao final do loop mais interno pus:

- desliga o [sink()], 
- fecha o arquivo de saida (log_file - no intuito de salvar o que já tem)
- abre o arquivo de saida (log_file)
- "liga" o [sink]


--------------------------
saida <- paste(....)  #monta o nome do arquivo de saida

log_file <- file(saida, open = "wt")
sink(file = log_file, append = TRUE, type = "output")  # começa a "captura"

LOOP1- inicio
    pegar referencia no [arquivo_a]
    LOOP2- inicio
         montar nome [arquivo_b]
         LOOP3(varrer [arquivo_b] - particionando) - inicio
              tarefa1
              tarefa2
                 :
              tarefa_n  

              sink() 
              close(log_file)
              log_file <- file(saida, open = "at")
              sink(file = log_file, append = TRUE, type = "output")

         LOOP3( varrer [arquivo_b] - particionando  ) - fim
    LOOP2 - fim 
LOOP1- fim  
--------------------------  


Mas parece que o arquivo continua fechando só  ao final do código, e com isso, se acaba a luz no meio do caminho, ou ocorre algum outro evento.... fico na saudade...

Tem remédio?????

------------------------
Cinara Santos
whatsApp (32) 9.8416-0441
_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.


_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] capturar a saída do r

R-br mailing list
Oi, Cinara

Eu não cheguei a montar uma forma de reproduzir seu problema aqui, mas uma sugestão é, em vez de desligar o sink e fechar a conexão do seu arquivo de log, usar o comando:

flush(log_file)

Se não me engano, esse comando vai garantir que os dados no buffer (memória) são salvos no arquivo (disco).

Espero ter ajudado,
Rodrigo Ângelo

On Wed, Dec 19, 2018 at 11:20 AM Marcos Silva por (R-br) <[hidden email]> wrote:
sink(). Dá uma olhada nessa função.

Em 19 de dez de 2018 11:13 AM, "Cinara Santos por (R-br)" <[hidden email]> escreveu:
Olá!

Gostaria de saber da possibilidade de capturar o [console] do R de forma dinâmica, como no software STATA - tudo o que sai na tela é copiado para um arquivo de log. Se houver interrupção, o log registra até o momento da interrupção.

E se fosse possível habilitar isso no R, me ajudaria muito!!!

Digo isso porque estou usando o comando [sink()]

sink(file = log_file, append = TRUE, type = "output")

Ocorre que o código lida com dados muito volumosos, dentro de um loop (com sub-loops também). Assim, na minha inocência tentei o seguinte - são 3 loops, um dentro do outro. 
Ao final do loop mais interno pus:

- desliga o [sink()], 
- fecha o arquivo de saida (log_file - no intuito de salvar o que já tem)
- abre o arquivo de saida (log_file)
- "liga" o [sink]


--------------------------
saida <- paste(....)  #monta o nome do arquivo de saida

log_file <- file(saida, open = "wt")
sink(file = log_file, append = TRUE, type = "output")  # começa a "captura"

LOOP1- inicio
    pegar referencia no [arquivo_a]
    LOOP2- inicio
         montar nome [arquivo_b]
         LOOP3(varrer [arquivo_b] - particionando) - inicio
              tarefa1
              tarefa2
                 :
              tarefa_n  

              sink() 
              close(log_file)
              log_file <- file(saida, open = "at")
              sink(file = log_file, append = TRUE, type = "output")

         LOOP3( varrer [arquivo_b] - particionando  ) - fim
    LOOP2 - fim 
LOOP1- fim  
--------------------------  


Mas parece que o arquivo continua fechando só  ao final do código, e com isso, se acaba a luz no meio do caminho, ou ocorre algum outro evento.... fico na saudade...

Tem remédio?????

------------------------
Cinara Santos
whatsApp (32) 9.8416-0441
_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.