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

时间:2017-09-11 03:46:24

标签: r

我有一个R文件,它将文件作为输入,我想要一种通用的方法来知道输入是否是一个存在的文件,而不是一个目录。

在Python中你会这样做:How do I check whether a file exists using 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

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

3 个答案:

答案 0 :(得分:9)

解决方案是使用file_test()

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

E.g。

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

file_test("-f", input.good) # returns TRUE
file_test("-f", input.bad) #returns FALSE

从手册:

  

<强>用法

     

file_test(op,x,y)参数

     

op 指定要执行的测试的字符串。一元   测试(仅使用x)是&#34; -f&#34; (存在而不是目录),   &#34; -d&#34; (存在和目录)和&#34; -x&#34; (可执行文件或   可以搜索为目录)。二元测试是&#34; -nt&#34; (严格来说更新   比,使用修改日期)和&#34; -ot&#34; (严格超过):   在这两种情况下,除非两个文件都存在,否则测试是假的。

     提供文件路径的

x y 字符向量。

答案 1 :(得分:8)

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

file.exists(f) && !dir.exists(f)

答案 2 :(得分:1)

您还可以使用<div style="width: 100%; overflow: scroll;"> <table style="width:100%"> 包中的is_file(path)