2017-01-05 1 views
0

1 년간 (2010/01/01-2010/12/31) 일부 파일이있는 두 개의 디렉토리가 있다고 가정합니다. 파일은 다음과 같이 지정됩니다 dirct1 :특정 날짜의 파일을 나열 하시겠습니까?

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

dirct2 :이 모든 날짜를 DIR1 및 DIR2에있는 모든 파일을 나열합니다

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

. 그러나 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] 
관련 문제