[r] R을 사용하여 지정된 확장자를 가진 모든 파일 나열

저는 R을 처음 사용하고 ArcGIS를 사용하여 만든 일련의 .dbf 테이블을 반복하고 일련의 그래프를 생성하기 위해 R 스크립트를 업데이트하는 중입니다.

모든 .dbf 파일을 포함하는 C : \ Scratch 디렉토리가 있습니다. 그러나 ArcGIS가 이러한 테이블을 생성 할 때 .dbf.xml 파일도 포함됩니다. 내 .dbf.xml 파일을 내 파일 목록에서 제거하여 반복하고 싶습니다. 나는 정규 표현식을 검색하고 실험 해 보았습니다. 이것은 내가 사용하는 기본 표현입니다 (다양한 실험 모두 제외).

files <- list.files(pattern = "dbf")

누구든지 나에게 방향을 줄 수 있습니까?



답변

files <- list.files(pattern = "\\.dbf$")

$끝에는 이것이 문자열의 끝임을 의미합니다. "dbf$"또한 작동하지만 \\.( .정규 표현식의 특수 문자이므로 이스케이프해야 함) 추가 .dbf하면 확장자가있는 파일 만 일치해야합니다 (예 : .adbf파일 이있는 경우 ).


답변

정규 표현식 대신 glob를 사용하여 시도하십시오. 따라서 끝나는 파일 이름 만 선택합니다. .dbf

filenames <- Sys.glob("*.dbf")


답변

문자를 "\\.dbf"사용하여 문자열 끝에서 찾을 패턴을 페그하십시오 $.

list.files(pattern = "\\.dbf$")


답변

정교한 정규 표현식을 사용하는 데별로 좋지 않으므로 다음과 같은 방법으로 이러한 작업을 수행합니다.

files <- list.files()
dbf.files <- files[-grep(".xml", files, fixed=T)]

첫 번째 줄은 작업 디렉토리의 모든 파일을 나열합니다. 두 번째는 “.xml”을 포함하는 모든 항목을 삭제합니다 (grep은 ‘files’벡터에 이러한 문자열의 색인을 반환합니다. 음수 색인을 사용하여 하위 설정하면 벡터에서 해당 항목이 제거됩니다). grep 함수에 대한 “고정 된”논증은 저의 변덕입니다. 나는 보통 Perl 스타일의 멋진 정규 표현식없이 조잡한 패턴 일치를 수행하기를 원하기 때문에 놀랍습니다.

나는 그러한 해결책이 단순히 내 교육의 단점을 반영한다는 것을 알고 있지만 초보자에게는 유용 할 수 있습니다.


답변

전체 경로가있는 파일 목록을 제공합니다.

  Sys.glob(file.path(file_dir, "*.dbf")) ## file_dir = file containing directory


답변