R:来自readline的奇怪的不需要的输出

时间:2017-01-26 13:55:44

标签: r

我想从R中的stdin获取输入 这是我的代码

fil <- file("stdin")
open(fil)
fn <- readline(fil)
fn <- strsplit(fn, split = ' ')
f <- fn[[1]][1]
n <- fn[[1]][2]
write(n, stdout())
close(fil)

当我运行此代码时

> fil <- fil("stdin")
> open(fil)
> fn <- readline(fil)
4

我从不知道这个不必要的号码4。有时它的3有时是它的4.它来自哪里?

1 个答案:

答案 0 :(得分:1)

readline()应该以交互模式从用户那里获得输入。 readline的参数是一个提示:

> n = readline("enter num: ")
enter num: 3
> n
[1] "3"

该行

fn <- readline(fil)

fil解释为提示。因此,您看到的数字(3或4)是由stdin函数分配给open()文件句柄,这会产生相当神秘的提示。

我认为(假设您尝试在批处理设置中管道来自stdin的数据),您需要使用readlines()。输入?readlines作为信息。另一方面,如果您正在编写程序以通过键盘以交互方式获取输入,请跳过关于将stdin作为文件打开的部分,并使用readline(<prompt of your choice>)。函数readline()已与stdin连接。