首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R.exe和Rscript.exe

R.exe和Rscript.exe
EN

Stack Overflow用户
提问于 2020-03-06 05:11:20
回答 2查看 2.2K关注 0票数 3

我是编程新手,我对两者之间的区别感到困惑。我已经在谷歌上搜索过了,但在阅读了回复后,我仍然对其中的区别感到困惑。

我感到困惑的部分原因是我在考虑在批处理文件中运行脚本。例如,假设我在R中有一个脚本,我创建了一个批处理文件,该文件在我使用R.exe的地方运行脚本。当我把它放在命令提示符下并运行批处理文件时,它只是获取我创建的脚本,并在R的控制台中运行它,对吗?

我已经看到你可以使用Rscript.exe运行批处理文件,这让我很困惑,因为当我把我创建的R脚本放到R的脚本部分(在控制台之上)时,这会有什么作用,因为脚本必须放到控制台才能运行。(除非Rscript.exe运行R的脚本部分中的任何内容?)

如果有人能向我解释这一切是如何工作的,我将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-12-11 05:52:07

首先,一些术语:尽管批处理的概念是通用的,它意味着无辅助执行,但批处理文件这个术语通常是指由cmd.exe处理的MS-Windows文件,MS-Windows传统的脚本文件。用于包含R命令的文件的术语通常是R脚本或Rscripts

也就是说,请考虑以下名为HelloFriend.R的简单R脚本

代码语言:javascript
复制
my.name <- readline(prompt="Enter name: ")
print(paste("Hello, ", my.name, "!"))

当直接在R控制台中运行时,因为

代码语言:javascript
复制
> source('HelloFriend.R')

它将显示输出

代码语言:javascript
复制
Enter name: 

如果用户键入Some Name并点击Enter,程序将输出

[1] "Hello, Some Name !"

如果在命令行中以R --no-save --quiet < HelloFriend.R身份运行,它将生成输出

代码语言:javascript
复制
> my.name <- readline(prompt="Enter name: ")
Enter name: 
> print(paste("Hello, ", my.name, "!"))
[1] "Hello,   !"
> 

最后,如果使用Rscript --vanilla HelloFriend.R运行,它将生成输出

代码语言:javascript
复制
Enter name: 
[1] "Hello,   !"

换句话说,当在R控制台中运行时,用户输入将是预期的。在R下运行时,但在命令行中,程序不会让用户有机会键入任何内容,但会显示命令回显。

最后,在Rscript下,也不需要用户输入,但不会显示命令回显。

顾名思义,Rscript是运行R脚本的首选形式。通过重定向将命令行中的R脚本传递给R也可以进行批处理,但会回显执行的命令。因此,它可以帮助调试代码,但它不是执行生产代码的首选方式。

票数 2
EN

Stack Overflow用户

发布于 2020-03-06 05:41:48

与批处理文件的类比很好。R.exe用于与语言交互,一次输入一条语句,并在输入下一条语句之前评估结果。Rscript.exe用于运行包含R命令的现有脚本(文件)。通常使用脚本的名称调用Rscript.exe

从命令行运行Rscript.exe my_script.R有点像运行

代码语言:javascript
复制
source("my_script.R")
q("no")

从R控制台。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60553991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档