ryc*_*cho 4 linux stdin r rstudio
当我尝试以下操作时:
f<-file("stdin")
lines<-readLines(f)
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 上的 R-studio 中,我可以输入文本但无法终止它。Ctr+C/D,随意敲击键盘无济于事。它只是挂起
到目前为止,我只找到了以下内容 如何在 R 的标准输入中输入 EOF? 但没有帮助 - 不得不杀死 R-studio。
任何人都解释什么是错的?
据推测,Rstudio 正在重定向 stdin,因此无法正常访问"stdin"或"/dev/stdin"不再正确访问它。但是,stdin()仍然有效。
我仍然无法实际键入 Ctrl+D。但是可以读取固定数量的行:
> a <- readLines(stdin(), n=2)
Hello
World
> a
[1] "Hello" "World"
Run Code Online (Sandbox Code Playgroud)
我还发现了一个可能有助于交互式调试的 hack。假设您的手册示例中最多有 10 行。然后你可以做
> a <- readLines(stdin(), n=10)
abc
def
ghi
# and now just keep pressing ENTER
...
> a <- a[a != ""]
> a
[1] "abc" "def" "ghi"
Run Code Online (Sandbox Code Playgroud)
如果您在 Ctrl+D 可用的环境中运行相同的代码,它也会正确终止输入。
注意事项:但stdin()不适用于Rscript:您必须切换回file("stdin"). 此外,在某些环境中,如果您使用readLineswithn=1逐行读取文件,则最终可能会重新打开文件并每次都获取第一行。似乎将所有内容放入一个文件并使用 eg 一次读取整个文件read.table是使用 Rstudio 开发的一种更强大的方式。
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |