Search code examples
rexecutableerror-logging

R executable not working, but script works fine


I have created a script that works fine when I run it from Rstudio.

However, when I save it as "Rexec" and try to run it by double clicking, it only partially launches.

I get a navigate gui pop-up to the initial file location, but then nothing happens after that. The black box with various messages displays some quickfire messages and closes before i can see what happened.

I have run another, much bigger script this way and had no problems.

This script is distinct in that when I run it through RStudio, there are multiple interactive gui dialog pop-ups that require some input from me i.e. choose column headers with select.list or save file as png via using:

png.filename <- tclvalue(tkgetSaveFile(initialfile = "choose name.png",
                                       filetypes = "{ {PNG Files} {.png} }"))

How can I check what is causing the problem i.e. output an error log?


Solution

  • I found this example of how to get error log: Output error/warning log (txt file) when running R script under command line.

    I just added these lines to my code as follows:

    zz <- file("error_log.text", open="wt")
    sink(zz, type="message")
    
    ....code chunk....
    
    sink(type="message") 
    close(zz)
    

    This writes a text file to the directory containing "foo_script.Rexec" with some messages that contain the following:

    Error in select.list(names(MQ.file.DF), multiple = TRUE, title = "Choose variables to remove",  : 
      select.list() cannot be used non-interactively
    Execution halted
    

    select.list() seems to be the issue, hence the process crashing.

    Work around - I changed to using tk_select.list and that seems to sort the problem. Script runs without a crash. I kind of prefer select.list as it supports click and dragging of cursor to highlight multiple columns, whereas with tk_select.list you have to click one at a time. I'll take a few more clicks as long as it runs ok. I hope this helps someone with a similar issue.