Generate a pop-up window in R

Asked

Viewed 124 times

2

I have a code in R that generates an output message stating whether a series is updated or not. I run the code through a file. bat on Windows and it generates a txt file. I tried to generate a pop-up using the package svDialogs, but it only generates the pop-up if I run the code by R itself. There is some way the pop-up can be displayed by running the code through the file. bat?

Code I’m using to show the pop-up inside the R:

dlg_message(mensagem, type = "ok")

File code . bat that I am using to run the code in R:

cd C:\Program Files\R\R-3.6.1\bin\i386
Rscript.exe C:\Users\User\Documents\R\consulta_ettj.R

Obs.: The code works normally running by . bat, only the pop-up that is not generated.

  • The difference is that one section is interactive and the other is not. For more information see ?interactive()

1 answer

3



inserir a descrição da imagem aqui


Needs to be using svDialogs? Apparently, it only works in interactive mode or in it (running inside the RStudio).


  • Is there any way the pop-up can be displayed by running the code through the file . bat?
  • 1) Yes, using the Tc/ltk, option that works outside of Rstudio, I mean, outside the interactive mode, and that already comes with the latest versions of .

  • 2) The alternative with the use of Tc/ltk and that works in the /

  • a) Or you enter the R folder runs:

    cd /d "C:\Program Files\R\R-3.6.1\bin\i386" && Rscript.exe Script.R

  • b) Or you can do your / create your Rscript to excommunicate you in running time, and without using escaping:



@;echo off && setlocal && mode 70,10 & color 0A & title ..\%~dpnx0
@;
@;<con: pushd "C:\Program Files\R\R-4.0.5\bin\i386\." 2>nul && =;(
@;cmd/r %__APPDIR__%findstr.exe /vb @; ^<"%~f0">"%temp%\RScr.r")=;
@;R.exe --vanilla <"%tmp%\RScr.r">nul 2>&1 &&(del/q "%tmp%\RScr.r"
@;endlocal & goto :EOF )||(del/q "%temp%\RScr.r" 2>nul && endlocal
@;echo[Error: Path para R/Rscript nao encontrado^!! & goto :EOF);=
@;
@; Nas linhas abaixo entraram o código R, mas sem iniciar com "@;"

require(tcltk)

msgBox <- tkmessageBox(title = "tc/ltk SO Q431647",
                       message = "Hello, world! by tcltk!", icon = "info", type = "ok")

msgBox <- tkmessageBox(title = "zOk Click..",
                       message = "z0k", type = "ok")

Obs.: The lines of the above code are executed by the command interpreter, and it exited execution at: goto :EOF, are also filtered to the script R, all that nay begin with the characters @;, then realize that your code in R, will have this limitation only, no line can start with @;


  • For conventional use
  • 1) Save this code in your Script.R:

require(tcltk)

msgBox <- tkmessageBox(title = "tc/ltk SO Q431647",
                      message = "Hello, world! by tcltk!", icon = "info", type = "ok")

msgBox <- tkmessageBox(title = "zOk Click..",
                       message = "z0k", type = "ok")

  • 2) Save this code in your bat/cmd:

@echo off && setlocal && mode 70,10 && color 0A && title %~dpnx0

pushd "C:\Program Files\R\R-3.6.1\bin\i386\." && R.exe --vanilla <"d:\caminho\do\seu\RScriptR.r"
popd && endlocal && goto :EOF


echo off
inibir eco do comando na sáida do prompt

setlocal
herdar as variáveis da sessão ambiente atual

mode 70,10
muda tamanho da janela p 70 colunas 10 linhas

color 0A 
muda cor de fundo para preto e a fonte verde claro

title %~dpnx0
atribuir titulo da janela com: d=drive p=path n=name x ext do bat

pushd "c:\..."
faz a pasta atual ser salva para retorno (via popd) e traz para pila a pasta
  
&& (
caso a execução anterior se deu se erro, vai executar as ações dentro enfileiradas dentro do ()

cmd  /r type "%~f0"
vai direcionar o conteúdo do arquivo bat (fullpath %~f0) para o findstr

findstr /vb ^@ |%__APPDIR__%findstr /vb ^@; >"%temp%\RScr.r")
vai ignorar todas as linhas iniciadas por "@;", e redirecionar como conteúdo para o arquivo >"%temp%\RScr.r" (gravar nele)

@;R.exe --vanilla <"%tmp%\RScr.r" 2>&1>&0
executar o escript apontado pelo operador < file. ignorando arquivos e avariável R_LIBS_USER local do usuário.

&& (del "%temp%\RScr.r"
se a execução se deu sem erro, vai apagar o script criado (temporário), finalizar o local, (endlocal) e ir para o final do arquivo, sair.. (executando o que esta em ()

||(del "%temp%\RScr.r" 2>nul && ;endlocal 
@;echo[Error: Path para R/Rscript não encontrado^!! & goto :EOF )
se a execução decorrer em erro(s), vai exibir uma mensagem, sugerindo que o erro está no caminho, vai apagar o script temporário, finalizar o local, (endlocal) e ir para o final do arquivo, sair..

@;:: Nas linhas abaixo entra o código R, mas sem iniciar com "@;"
Apenas um comentário lembrado da limitação para autoria de código em script R

Browser other questions tagged

You are not signed in. Login or sign up in order to post.