2014-02-05 3 views
0

Ho 주어진 정규식 패턴과 일치하는 파일 만 보관 하시겠습니까? 패턴에 맞는 파일이 없으면 아카이브에 파일을 추가하지 않아야합니다. 변수 파일에서r 정규식과 일치하는 파일 보관

a <- "file-05-02-2014" 

files <- list.files(path = getwd(), pattern = a) 

, 내가 작업 디렉토리에있는 모든 파일을 받고 있어요 및 :

는 내가 변수의 값이 문자열과 일치하는 디렉토리의 모든 파일을 얻을 필요 문자열의 패턴과 일치하는 것만이 아닙니다.

그냥 문자열을 매개 변수로 넣을 때 괜찮습니다.

files <- list.files(path = getwd(), pattern = "file-05-02-2014") 

그러나 문자열 변수가 아닌 문자열 리터럴을 사용해야합니다.

UPDATE : 여기

전체 맥락이다 나는 우편 기능 내부 list.files를 호출하고 있습니다. 패턴과 일치하는 파일이 없으면 지정된 디렉토리 내의 모든 파일과 디렉토리가 아카이브에 추가됩니다.

따라서 zip 함수와 관련이 있으며 list.files 함수와는 관련이 없습니다.

해결책은 그것을 할 수

a <- "file-05-02-2014" 
files.to.be.archived <- list.files(path = getwd(), pattern = a) 

if(length(files.to.be.archived)>0) 

    zip(paste(getwd(), "myarchive.zip", sep="/"), 
     files=paste(getwd(),files.to.be.archived, sep="/")) 

모든 간결한 방법으로 우편 호출하기 전에 패턴을 만족하는 모든 파일이 있는지 확인하는 것입니다?

+0

'glob2rx'을 (를) 사용 중일 수 있습니다. – dickoa

+0

시도했지만 작동하지 않습니다! ... 제 사례의 상황을 반영하기 위해 더 많은 함정을 추가하고 있습니다. – massinissa

+0

사람들이 더 많은 정보와 일치시켜야하는 파일 유형의 예를 추가해야하는 경우 도움을 원합니다. – dickoa

답변

0

코드는 정상입니다. 작업 디렉토리 만 사용 중이므로 getwdpaste을 제거 할 수 있습니다.

a <- "file-05-02-2014" 
files.to.be.archived <- list.files(pattern = a) 
if(length(files.to.be.archived)) 
    zip("myarchive.zip", files = files.to.be.archived) 
관련 문제