gpt4 book ai didi

r - 如何在 R 中没有打开连接的情况下创建连接对象?

转载 作者:行者123 更新时间:2023-12-04 10:44:23 25 4
gpt4 key购买 nike

我似乎无法创建关闭的连接对象。我想有一个连接对象,如果isOpen(myCon),我可以给它一个连接。返回 FALSE .我希望 myCon<-file()给我一个封闭的连接,但是 isOpen(myCon)返回 TRUE .我从帮助文件中看到 file()实际上返回到“匿名文件”的连接,这显然只是一个充当文件的内存位置。 ……不是我想要的。如果我创建匿名文件并执行 close(myCon) ,然后 isOpen(myCon)给出无效连接错误而不是返回 FALSE .我不想为了得到我的错误值而陷入错误。如何创建未打开的有效连接?一定有办法isOpen(myCon)可以退货FALSE ,否则它是一个有点无意义的函数。我的操作系统是 Windows 7。

最佳答案

只要第一个参数(描述)是非空字符串,file() 就可以工作。例子:

> myCon <- file("dumdum")
> isOpen(myCon)
[1] FALSE

关键是第二个参数(open)留空(默认)。用于描述的字符串是否为现有文件并不重要。但是,这并不意味着不能使用该连接。 R 根据需要打开连接。例如:
> myCon <- file("important log file.txt")
> isOpen(myCon)
[1] FALSE
> cat("Thinking this will fail, because the connection is closed. ...wrong!", file=myCon)
> isOpen(myCon)
[1] FALSE

该文件刚刚被那一行覆盖。

建立备用连接的安全方法是使用 tempfile() 生成描述。这将返回一个保证“当前未使用”的字符串(...根据帮助页面。我将其解释为该字符串不是现有文件的名称。)
> myCon <- file( tempfile() )
> isOpen(myCon)
[1] FALSE
> cat("Didn't mean to do this, but all it will do is create a new file.", file=myCon)
> isOpen(myCon)
[1] FALSE

在这种情况下,该行被写入文件,但没有覆盖任何内容。

非常感谢 Martin Morgan 为我指明了正确的方向。我欢迎补充意见。

关于r - 如何在 R 中没有打开连接的情况下创建连接对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59776439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com