![](/img/trans.png)
[英]R.exe, Rcmd.exe, Rscript.exe and Rterm.exe: what's the difference?
[英]R.exe and Rscript.exe
我是编程新手,我对两者之间的区别感到困惑。 我在谷歌上搜索过这个,在阅读了回复后,我仍然对差异感到困惑。
我感到困惑的部分原因是我正在考虑在批处理文件中运行脚本。 例如,假设我在 R 中有一个脚本,我创建了一个批处理文件来运行我使用 R.exe 的脚本。 当我把它放在命令提示符中并运行批处理文件时,它只需要我制作的脚本并在 R 的控制台中运行它,对吗?
我已经看到您可以使用 Rscript.exe 运行批处理文件,这让我感到困惑,因为当我使用我制作的 R 脚本并将其放入 R 的脚本部分(控制台上方)时,这将如何做任何事情,因为脚本必须放入控制台才能运行。 (除非 Rscript.exe 运行 R 脚本部分中的任何内容?)
如果有人可以向我解释这一切是如何运作的,我将不胜感激。 谢谢!
首先,一些术语:尽管批处理的概念是通用的,它意味着无辅助执行,但术语批处理文件通常保留给 cmd.exe 处理的 MS-Windows 文件,MS-Windows 传统脚本文件。 用于包含R
命令的文件的术语通常是R 脚本或Rscripts
。
也就是说,请考虑以下名为HelloFriend.R
简单 R 脚本:
my.name <- readline(prompt="Enter name: ")
print(paste("Hello, ", my.name, "!"))
当直接在 R 控制台中运行时,如
> source('HelloFriend.R')
它会显示输出
Enter name:
如果用户Enter
Some Name
并按Enter
,程序将输出
[1] "Hello, Some Name !"
如果它在命令行中作为R --no-save --quiet < HelloFriend.R
,它将生成输出
> my.name <- readline(prompt="Enter name: ")
Enter name:
> print(paste("Hello, ", my.name, "!"))
[1] "Hello, !"
>
最后,如果使用Rscript --vanilla HelloFriend.R
运行,它将生成输出
Enter name:
[1] "Hello, !"
换句话说,当在R
控制台内运行时,将需要用户输入。 在R
下运行时,但在命令行中,程序不会给用户输入任何内容的机会,但会显示命令 echo。
最后,在Rscript
下,也不会预期用户输入,但不会显示命令 echo。
Rscript
是运行 R 脚本的首选形式。 通过重定向将命令行中的 R 脚本传递给 R 也提供了批处理,但会回显执行的命令。 因此它可以帮助调试代码,但它不是执行生产代码的首选方式。
与批处理文件的类比是一个很好的类比。 R.exe
用于与语言交互,一次输入一个语句,并在输入下一个语句之前评估结果。 Rscript.exe
用于运行包含 R 命令的现有脚本(文件)。 您通常使用脚本名称调用Rscript.exe
。
Rscript.exe my_script.R
运行Rscript.exe my_script.R
有点像运行
source("my_script.R")
q("no")
从 R 控制台。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.