如何检查输入 *rds 文件是否有效?

时间:2021-02-04 16:12:35

标签: r binaryfiles rdata

我正在为一个接受 *rds 文件作为输入参数的包编写 R 函数。用户旨在提供一个输入 *rds 文件,该文件将由函数读取,并进一步与下游一起工作。

我目前很困惑如何最好地检查提供的 *rds 文件 (1) 实际上是 *rds 文件和 (2) 有效的 *rds 文件。

Note on *rds and readRDS()

例如,假设用户提供了一个扩展名为 *rds 的文件,但它是无效的:

$ touch foobar.rds
$ R

> foo = readRDS("foobar.rds")
Error in readRDS("foobar.rds") : error reading from connection

是的,我可以写一个 tryCatch() 如下来捕捉这些错误,例如

readInputRdsFile = function(input_rds){
    input = tryCatch(readRDS(input_rds), 
    error = function(c) stop("The input *rds is invalid. Please fix your input file.")
    )
}
## within R
> readInputRdsFile("foobar.rds")
Error in value[[3L]](cond) : 
  The input *rds is invalid. Please fix your input file.

然而,这是一个非常通用的检查。除了“无效”之外,*rds 文件可能还有很多问题(在这种情况下,它根本不是 *rds 文件,而是文本文件)。

是否有更多的标准检查可以更准确地检测 *rds 文件的问题?任何见解表示赞赏,谢谢!

0 个答案:

没有答案