「R」カテゴリーアーカイブ

Rで任意のディレクトリから任意の数だけファイルを抽出

任意のディレクトリ内にあるファイルから、ランダムに抽出したい数を指定して、その数だけファイルを抽出したい。そして抽出したファイルは、新しいディレクトリ内に入れたい。さらに、任意のディレクトリ内に複数の拡張子がある場合は、指定した拡張子のファイルのみランダマイズして指定した数だけ抽出したい。とりあえずRで作ってみた。

まずは、一度抽出したファイルは二度と抽出しないように、新しいディレクトリに「移動」させる方法

rand_files_mv <- function(foldername,extension,threshold){
	filename <- list.files(pattern=extension)
	chosen <- filename[sample(length(filename),threshold)]
	dir.create(foldername)
	currentdir <- getwd()
		for (i in chosen) {
			file.rename(from=paste(currentdir,"/",i,sep=""),to=paste(currentdir,"/",foldername,"/",i,sep=""))
		}
}

次に、一度抽出したファイルをもう一度抽出できるように、新しいディレクトリに「コピー」する方法

rand_files_cp <- function(foldername,extension,threshold){
	filename <- list.files(pattern=extension)
	chosen <- filename[sample(length(filename),threshold)]
	dir.create(foldername)
	currentdir <- getwd()
		for (i in chosen) {
			file.copy(from=paste(currentdir,"/",i,sep=""),to=paste(currentdir,"/",foldername,"/",i,sep=""))
		}
}

いずれも、引数は、以下の3つ。
1. 移動・コピー先のディレクトリー名(ダブルクォートで囲む)
2. ランダマイズ抽出したいファイルの拡張子
3. ランダマイズ抽出したいファイルの数