我是编程新手,我对两者之间的区别感到困惑。我已经在谷歌上搜索过了,但在阅读了回复后,我仍然对其中的区别感到困惑。
我感到困惑的部分原因是我在考虑在批处理文件中运行脚本。例如,假设我在R中有一个脚本,我创建了一个批处理文件,该文件在我使用R.exe的地方运行脚本。当我把它放在命令提示符下并运行批处理文件时,它只是获取我创建的脚本,并在R的控制台中运行它,对吗?
我已经看到你可以使用Rscript.exe运行批处理文件,这让我很困惑,因为当我把我创建的R脚本放到R的脚本部分(在控制台之上)时,这会有什么作用,因为脚本必须放到控制台才能运行。(除非Rscript.exe运行R的脚本部分中的任何内容?)
如果有人能向我解释这一切是如何工作的,我将不胜感激。谢谢!
发布于 2020-12-11 05:52:07
首先,一些术语:尽管批处理的概念是通用的,它意味着无辅助执行,但批处理文件这个术语通常是指由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: 如果用户键入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下运行时,但在命令行中,程序不会让用户有机会键入任何内容,但会显示命令回显。
最后,在Rscript下,也不需要用户输入,但不会显示命令回显。
顾名思义,Rscript是运行R脚本的首选形式。通过重定向将命令行中的R脚本传递给R也可以进行批处理,但会回显执行的命令。因此,它可以帮助调试代码,但它不是执行生产代码的首选方式。
发布于 2020-03-06 05:41:48
与批处理文件的类比很好。R.exe用于与语言交互,一次输入一条语句,并在输入下一条语句之前评估结果。Rscript.exe用于运行包含R命令的现有脚本(文件)。通常使用脚本的名称调用Rscript.exe。
从命令行运行Rscript.exe my_script.R有点像运行
source("my_script.R")
q("no")从R控制台。
https://stackoverflow.com/questions/60553991
复制相似问题