Sir*_*ver 4 windows r command-line-arguments
我正在尝试使用
var <- as.numeric(readline(prompt="Enter a number: "))
Run Code Online (Sandbox Code Playgroud)
然后在计算中使用它。
在 RStudio 中运行时工作正常,但我需要能够从 Windows 10 中的命令行传递此输入我正在使用带有单行的批处理文件
Rscript.exe "C:\My Files\R_scripts\my_script.R"
Run Code Online (Sandbox Code Playgroud)
当它到达用户输入部分时,它会冻结并且不提供预期的输出。
来自以下文档readline():
这只能在交互式会话中使用。[...] 在非交互式使用中,结果就像响应是 RETURN 并且值为“”。
对于非交互式使用 - 当从命令行调用 R 时 - 我认为你有两个选择:
readLines(con = "stdin", n = 1)从终端读取用户输入。commandArgs(trailingOnly = TRUE)在调用脚本时从命令行提供输入作为参数。下面是更多信息。
readLines()readLines()看起来与readline()您正在使用的非常相似,但旨在逐行读取文件。如果我们不是将文件指向标准输入 ( con = "stdin"),它就会从终端读取用户输入。我们设置n = 1为当您按 Enter 时它停止从命令行读取(即,它只读取一行)。
readLines()在 R 脚本中使用:
# some-r-file.R
# This is our prompt, since readLines doesn't provide one
cat("Please write something: ")
args <- readLines(con = "stdin", n = 1)
writeLines(args[[1]], "output.txt")
Run Code Online (Sandbox Code Playgroud)
调用脚本:
Rscript.exe "some-r-file.R"
Run Code Online (Sandbox Code Playgroud)
现在它会询问您的输入。这是 PowerShell 的屏幕截图,我在其中提供了“任何文本!”。
然后output.txt将包含:
Any text!
Run Code Online (Sandbox Code Playgroud)
commandArgs()从终端调用时Rscript.exe,您可以添加额外的参数。您可以捕获这些参数并commandArgs()在代码中使用它们。
commandArgs()在 R 脚本中使用:
Any text!
Run Code Online (Sandbox Code Playgroud)
调用脚本:
# some-r-file.R
args <- commandArgs(trailingOnly = TRUE)
writeLines(args[[1]], "output.txt")
Run Code Online (Sandbox Code Playgroud)
然后output.txt将包含:
Any text!
Run Code Online (Sandbox Code Playgroud)