簡體   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