我可以在R中写入和访问内存中的文件吗?

Dav*_*uer 4 r

我正在为导入xml文件的R函数编写测试settings.xml.

目前,当我为依赖于内容的函数编写测试时foo.xml,包括read.settings以下示例中的函数:

writeLines("<fee><fi><\fi>\fee>", con = "/tmp/foo.xml")
settings <- read.settings("/tmp/foo.xml")
file.remove("/tmp/foo.xml")
Run Code Online (Sandbox Code Playgroud)

但是,出现了许多与使测试系统无关的问题.例如,在测试目录/tmp/read.settings()留下孤立文件等可能无法写入或出错.这是一个简单的例子,我可以想办法解决这些问题,但我记得在回答上一个问题时有这样的解决方案,我现在找不到,其中con不是文件而是内存中的对象.我确信在很多情况下,不实际编写文件是有用的.

  • 有没有办法编写和访问仅存在于内存中的伪文件?
  • 记录的功能在哪里?
    ?connections似乎是一个很好的领导,但我不清楚如何使用提供的信息

跟进(但不要太开放)

  • 除了上面描述的内容之外,这种功能的主要用途是什么?
  • 是否应该使用此功能的情况?

Jos*_*ien 5

这是一个可能有用的结构.tempfile()在任何操作系统上返回临时文件的有效名称,并且on.exit(unlink())无论发生什么,该调用都可确保删除临时文件.

test1 <- function() {
    temp <- tempfile()
    on.exit(unlink(temp))
    writeLines("<fee><fi><\fi>\fee>", con = temp)
    settings <- readLines(temp)
    settings
}

test1()
# [1] "<fee><fi><\fi>\fee>"
Run Code Online (Sandbox Code Playgroud)