我尝试读取输入时尝试使用“连接”导致R冻结或崩溃

莱利·芬恩(Riley Finn)

抱歉,我在标题中使用的术语可能使用不正确。每当我尝试运行此代码时,似乎都在尝试运行它,但从未完成命令。当我单击停止命令符号(红色)时,它没有任何作用。我无法将R排除在外。那为什么要花那么长的时间呢?

con <- file('stdin', open = 'r')

inputs <- readLines(con)
德迈尔

在RStudio中工作时,您需要使用readLines(stdin())而不是readLines(file('stdin')),但是如果在终端中运行R也可以使用。

但是,由于您使用的是RStudio,因此未指定输入的行数也存在问题。从标准输入读取输入时,Ctrl+D表示输入结束。但是,如果您是从RStudio而不是从终端Ctrl+D执行此操作,则不可用,因此如果不指定输入行,则无法终止从stdin的读取。

因此,如果从终端运行R,则代码将起作用,并通过Ctrl+表示输入结束D如果您必须在RStudio上工作,readLines(stdin()) 则在知道输入行数的情况下仍可以使用例如,

> readLines(stdin(), n=2)
Hello
World
[1] "Hello" "World"

另一种解决方法是使用scan(),例如:

> scan(,'')
1: Hello
2: World
3: 
Read 2 items
[1] "Hello" "World"

(在第三行,我只是按下Enter以终止输入)。这样做的好处是您不需要事先知道输入的行数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章