ファイルを入力として受け取る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
Rにはfile.exists()と呼ばれるものがありますが、これはファイルとディレクトリを区別しません。
解決策は file_test() を使用することです
これにより、シェルスタイルのファイルテストが提供され、ファイルとフォルダーを区別できます。
例えば。
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のみが使用されます)は、「-f」(存在し、ディレクトリではない)、「-d」(存在およびディレクトリ)、および「-x」(ファイルとして実行可能、またはディレクトリとして検索可能)です。バイナリテストは、「-nt」(厳密に新しい、変更日を使用)および「-ot」(厳密に古い)です。どちらの場合も、両方のファイルが存在しない限り、テストはfalseです。
x、yファイルパスを与える文字ベクトル。
dir.exists
関数は、Rの最近のすべてのバージョンで使用できます。
file.exists(f) && !dir.exists(f)
fs
パッケージのis_file(path)
を使用することもできます。