![](/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.