1. ホーム
  2. r

[解決済み] list.files()のように、あるディレクトリ内のディレクトリのリストを取得するには、代わりに "list.dirs()" を使用します。

2023-03-27 03:12:16

質問

これは、誰かにとってはとても簡単な質問かもしれません。 list.files() を使用して、与えられたディレクトリ内のファイルのリストを取得することができますが、ディレクトリのリストを取得したい場合、どのようにこれを行うのでしょうか? それはどうにかして、目の前のオプションとして list.files() ?

また、私はWindowsを使用しているので、もし答えがLinux/unixコマンドにシェルアウトすることであるなら、それは私のために動作しないでしょう。

例えば.NETには Directory.GetFiles() メソッドと、別の Directory.GetDirectories() メソッドがあるので、Rにも類似のペアがあるだろうと思いました。事前にありがとうございます。

どのように解決するのですか?

アップデート:A list.dirs 関数がリビジョン 54353 で基本パッケージに追加され、2011 年 4 月にリリースされた R-2.13.0 に含まれました。

list.dirs(path = ".", full.names = TRUE, recursive = TRUE)

というわけで、以下の私の関数は数ヶ月しか役に立ちませんでした :)


これを行うための基本的なR関数は見つかりませんでしたが、これを使用して独自の関数を書くのはかなり簡単でしょう。

dir()[file.info(dir())$isdir]

更新:ここに関数があります(現在はTimothy Jonesのコメントで修正されています)。

list.dirs <- function(path=".", pattern=NULL, all.dirs=FALSE,
  full.names=FALSE, ignore.case=FALSE) {
  # use full.names=TRUE to pass to file.info
  all <- list.files(path, pattern, all.dirs,
           full.names=TRUE, recursive=FALSE, ignore.case)
  dirs <- all[file.info(all)$isdir]
  # determine whether to return full names or just dir names
  if(isTRUE(full.names))
    return(dirs)
  else
    return(basename(dirs))
}