我正在为导入 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")
但是出现了许多与使测试系统独立相关的问题。例如,
/tmp/
可能不可写或 read.settings()
中的错误在 test 目录中留下一个孤立文件,等等。这是一个微不足道的例子,我可以想出解决这些问题的方法,但我记得在上一个问题的答案中提供了这样的解决方案,我现在找不到,其中con
不是文件而是内存中的对象。我确信在很多情况下不实际写入文件会很有用。?connections
似乎是一个很好的线索,但我不清楚如何使用提供的信息 作为跟进(但不要太开放)
最佳答案
这是一个可能有用的构造。 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>"
关于r - 我可以在 R 中写入和访问内存中的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12940343/