繁体   English   中英

R.exe 和 Rscript.exe

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM