web-dev-qa-db-ja.com

Rファイルが存在し、ディレクトリではないかどうかをテストする

ファイルを入力として受け取る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()と呼ばれるものがありますが、これはファイルとディレクトリを区別しません。

15
roblanf

解決策は 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です。

xyファイルパスを与える文字ベクトル。

11
roblanf

dir.exists関数は、Rの最近のすべてのバージョンで使用できます。

file.exists(f) && !dir.exists(f)
11
Hong Ooi

fsパッケージのis_file(path)を使用することもできます。

2
Teodor Ciuraru