R测试文件是否存在,而不是目录

rob*_*anf 11 directory r file

我有一个R脚本,它接受一个文件作为输入,我想要一个通用的方法来知道输入是一个存在的文件,而不是一个目录.

在Python中,您可以这样做:如何使用Python检查文件是否存在?,但我很难在R中找到类似的东西.

假设file.txt实际存在,我想要的是下面的内容:

input.good = "~/directory/file.txt"
input.bad = "~/directory/"

is.file(input.good) # should return TRUE
is.file(input.bad) #should return FALSE
Run Code Online (Sandbox Code Playgroud)

R有一个叫做file.exists()的东西,但这并不区分文件和目录.

Hon*_*Ooi 13

dir.exists在所有最新版本的R中都有一个功能.

file.exists(f) && !dir.exists(f)
Run Code Online (Sandbox Code Playgroud)


rob*_*anf 11

解决方案是使用file_test()

这提供了shell样式的文件测试,并且可以区分文件和文件夹.

例如

input.good = "~/directory/file.txt"
input.bad = "~/directory/"

file_test("-f", input.good) # returns TRUE
file_test("-f", input.bad) #returns FALSE
Run Code Online (Sandbox Code Playgroud)

从手册:

用法

file_test(op,x,y)参数

op 指定要执行的测试的字符串.一元测试(仅使用x)是"-f"(存在而不是目录)," - d"(存在和目录)和"-x"(可作为文件执行或可作为目录搜索).二进制测试是"-nt"(严格比使用修改日期更新)和"-ot"(严格地说比旧版本):在两种情况下,除非两个文件都存在,否则测试为假.

x,y 字符向量给出文件路径.