ドキュメントに基づく:
dir(path = ".", pattern = NULL, all.files = FALSE,
full.names = FALSE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE)
all.files: a logical value. If 'FALSE', only the names of visible
files are returned. If 'TRUE', all file names will be
returned.
実際、少なくとも Win7 x64 では、次のようになります。
dir(all.files = FALSE)
attrib
次のように設定されたファイルもリストされます。
_HSA_________
と:
dir (all.files = TRUE)
無意味なディレクトリプレースホルダーも取得します:
[1] "." ".."
あなたはどうですか ?
更新: 解決策、設計戦略、またはバグ?
さらに調査を重ねた後、(願わくば) 有益な洞察を得ることができます。多くの人が知っているように、Linux では「ドット」で始まるファイルは隠しファイルと見なされますが、属性に基づく Windows ではそうではありません。(のdir()
機能) R は Linux の規約に従います。Windows では、これにより多くの問題が発生する可能性があります。
標準を発行するdir()
と、つまり可視ファイルを照会すると、隠しファイルも取得されます。さらに深刻なことに、Windows では特に意味のない無害なドットで始まるという理由だけで、可視ファイルを取得できない場合があります。これは、Windows では、dir()
ドットファイルが存在しないことが確実な制御された環境で操作していない限り、標準はまったく役に立たないことを意味します。
dir (all.files = TRUE)
隠しファイルやシステム ファイルを除外することに関心がない場合は、部分的に役立つ可能性があります。ただし、これはインタラクティブな使用にのみ当てはまります。
常にanddir (all.files = TRUE)
という名前の 2 つの偽のファイルを追加します(ルート以外は常に)。これは、ディレクトリが空であることを確認する次のような行は、Windows では機能しないことを意味します。.
..
if (length(dir(all.files = TRUE))==0) cat('I am empty\n')
この動作は設計によって実装されていますか?
Rdir()
はこのように Windows シェル コマンドを複製するので、そうであると答える人もいるかもしれませんdir
。IMHO シェルdir
は、主にバッチでの使用を意図したものではありません。一方、R コマンドはプログラミング タスクを対象とする必要があります。とにかく、この複製動作が次の場合にのみ表示されるのはなぜall.files = TRUE
ですか?
1 つ確かなことは、R のコーダーは、ドキュメントのさまざまな OS の違いを詳しく説明するのにいつもとても親切であるということです 。 /html/list.files.html ) 「Windows」という単語は表示されません。
あなたの意見は何ですか?何か不足していますか?それとも、実際のバグを提出する場合ですか?