R 可执行文件不工作,但脚本工作正常
R executable not working, but script works fine
我创建了一个脚本,当我从 Rstudio 运行 它时它可以正常工作。
但是,当我将它另存为 "Rexec" 并尝试通过双击 运行 它时,它只能部分启动。
我得到一个导航 gui pop-up 到初始文件位置,但之后没有任何反应。带有各种消息的黑框显示一些 quickfire 消息并在我看到发生了什么之前关闭。
我有 运行 另一个更大的脚本,没有问题。
这个脚本的不同之处在于,当我通过 RStudio 运行 它时,有多个交互式 gui 对话框 pop-up 需要我的一些输入,即选择列 headers 和 select.list
或通过使用将文件保存为 png:
png.filename <- tclvalue(tkgetSaveFile(initialfile = "choose name.png",
filetypes = "{ {PNG Files} {.png} }"))
如何检查导致问题的原因,即输出错误日志?
我找到了这个如何获取错误日志的示例:Output error/warning log (txt file) when running R script under command line。
我刚刚将这些行添加到我的代码中,如下所示:
zz <- file("error_log.text", open="wt")
sink(zz, type="message")
....code chunk....
sink(type="message")
close(zz)
这会将一个文本文件写入包含 "foo_script.Rexec" 的目录,其中包含一些包含以下内容的消息:
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()
似乎是问题所在,因此进程崩溃了。
解决方法 - 我改为使用 tk_select.list
,这似乎解决了问题。脚本运行没有崩溃。我有点喜欢 select.list
,因为它支持单击和拖动光标以突出显示多列,而使用 tk_select.list
时,您必须一次单击一个。只要它运行正常,我会再点击几下。我希望这对遇到类似问题的人有所帮助。
我创建了一个脚本,当我从 Rstudio 运行 它时它可以正常工作。
但是,当我将它另存为 "Rexec" 并尝试通过双击 运行 它时,它只能部分启动。
我得到一个导航 gui pop-up 到初始文件位置,但之后没有任何反应。带有各种消息的黑框显示一些 quickfire 消息并在我看到发生了什么之前关闭。
我有 运行 另一个更大的脚本,没有问题。
这个脚本的不同之处在于,当我通过 RStudio 运行 它时,有多个交互式 gui 对话框 pop-up 需要我的一些输入,即选择列 headers 和 select.list
或通过使用将文件保存为 png:
png.filename <- tclvalue(tkgetSaveFile(initialfile = "choose name.png",
filetypes = "{ {PNG Files} {.png} }"))
如何检查导致问题的原因,即输出错误日志?
我找到了这个如何获取错误日志的示例:Output error/warning log (txt file) when running R script under command line。
我刚刚将这些行添加到我的代码中,如下所示:
zz <- file("error_log.text", open="wt")
sink(zz, type="message")
....code chunk....
sink(type="message")
close(zz)
这会将一个文本文件写入包含 "foo_script.Rexec" 的目录,其中包含一些包含以下内容的消息:
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()
似乎是问题所在,因此进程崩溃了。
解决方法 - 我改为使用 tk_select.list
,这似乎解决了问题。脚本运行没有崩溃。我有点喜欢 select.list
,因为它支持单击和拖动光标以突出显示多列,而使用 tk_select.list
时,您必须一次单击一个。只要它运行正常,我会再点击几下。我希望这对遇到类似问题的人有所帮助。