我有一个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()的东西,但这并不能区分文件和目录。
答案 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)
。