如何在脚本中包含要从命令行运行的交互式输入

hig*_*dth 16 r

我正在尝试编写一个交互式R脚本.例如:

try.R:

print("Entr some numbers. >",quote=F)
a = scan(what=double(0))
print a
q()
Run Code Online (Sandbox Code Playgroud)

现在,如果我在命令行上运行它

$ R --no-save < try.R
Run Code Online (Sandbox Code Playgroud)

它试图从try.R获取stdin,给出以下错误:

> print("Entr some numbers. >",quote=F)
[1] Entr some numbers. >
> a = scan(what=double(0))
1: print a
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  scan() expected 'a real', got 'print'
Execution halted
Run Code Online (Sandbox Code Playgroud)

我尝试了其他一些方法,但它们都给出了错误.例如:

$ R CMD BATCH try.R 
$ Rscript try.R 
Run Code Online (Sandbox Code Playgroud)

那么如何编写一个可以从*nix shell命令行运行的R脚本,并且可以从用户那里获取交互式输入?

Jos*_*ich 21

试试这个:

cat("What's your name? ")
x <- readLines(file("stdin"),1)
print(x)
Run Code Online (Sandbox Code Playgroud)

希望有一些变体适合你.

  • IIRC只是`readLines(n = 1)`也应该这样做. (2认同)