2017-01-05 19 views
0

私は1年(2010/01/01-2010/12/31)のいくつかのファイルを持つ2つのディレクトリがあると仮定します。 dirct1:特定の日付のファイルを一覧表示しますか?

fs_df_20100101F00_20100101F88_777_0009.dat 
fs_df_20100102F00_20100102F88_777_0009.dat 
etc.............(only the date change) 

dirct2:

gf_gh_20100101F00_20100101F88_788_08.dat 
gf_gh_20100102F00_20100102F88_788_08.dat 
etc.............(only the date change) 

これは、すべての日付のDIR1とDIR2内のすべてのファイルを一覧表示しますファイルは、このように命名されています。ただし、dir1にはいくつかのファイル(日付)がありません。しかし、私が必要とするのは、dir1と同じ日付を共有するdir2のファイルだけをリストすることです。 (dir1に日付がない場合はdir2にリストしないでください).......

+1

'intersect(dir1、dir2)'? –

+0

良い点!その場合、次のようにすることもできます: 'lapply(intersect(substr(dir1、7,14)、(dir2,7,14))、do-something)' –

答えて

1

最初にファイル名から日付を抽出する必要があります。あなたは一貫性のあるネーミングシステムを持っているので、あなたは正規表現を避け、その後dir1whichを使用してdir2にあるの日付を決定substr

dir1 = c("fs_df_20100101F00_20100101F88_777_0009.dat", "fs_df_20100102F00_20100102F88_777_0009.dat") 
dir2 = c("gf_gh_20100101F00_20100101F88_788_08.dat", "gf_gh_20100102F00_20100102F88_788_08.dat") 

substr(dir1, 7, 14) 
#[1] "20100101" "20100102" 

を使用して%in%オペレータ

matching = which(substr(dir1, 7, 14) %in% substr(dir2, 7, 14)) 

それからちょうど

使用することができます
dir1[matching] 
関連する問題