2017-04-07 5 views
1

하나의 텍스트 파일을 읽으려면 아래 라인을 사용하고 있습니다. 그러나 텍스트 파일 목록을 읽으려면 모두 포함시켜야합니다. R에서 어떻게 이것을 할 수 있습니까?이름의 일부를 기반으로 R의 텍스트 파일 목록을 읽습니다.

C :/data 경로에 여러 폴더가 있습니다. 즉. 1998_Data, 1999_Data .... 이렇게 각 폴더에는 01.txt ... 49.txt 텍스트 파일이 있습니다.

미리 감사드립니다.

startingDir<-"C:/Data" 
files <- list.files(path = startingDir,pattern = "24.txt",recursive=T,full.names=T) 

아래 줄을 포함했지만 목록의 3 개 파일을 모두 읽지는 않습니다. 제안 사항이 있으십니까? pattern는 정규 표현식을 기대하기 때문에

my_files <- c("24.txt","01.txt","10.txt") 
files <- list.files(path = startingDir,pattern = my_files,recursive=T,full.names=T) 

답변

2

있다는 :

thepattern <- "24\\.txt|01\\.txt|10\\.txt" 
files <- list.files(path = startingDir, 
        pattern = thepattern, 
        recursive=TRUE, 
        full.names=TRUE) 

는 달리 "무엇"으로 해석됩니다 당신은 점을 탈출해야 명심하십시오. 당신이 자동화 할 경우

, 당신은 다음과 같은 작업을 수행 할 수

my_files <- c("24.txt","01.txt","10.txt") 
my_files <- gsub(".","\\.",my_files, fixed = TRUE) 
my_pattern <- paste(my_files, collapse = "|") 

당신은 "무엇"과 같이되는 점을 방지하기 위해 gsub에서 fixed = TRUE이 필요합니다. 또한보십시오 ?regex

+0

감사합니다. 위의 해결책은 효과가있는 것으로 보입니다. 그러나 자동화를위한 코드가 작동하지 않습니다. 모든 파일을 읽지는 않지만 목록의 첫 번째 텍스트 파일을 읽습니다. – user3408139

+0

@ user3408139 내 잘못, 나는'붕괴 '대신'sep'를 사용했다. 올바른 정규식을 생성하도록 코드를 업데이트했습니다. –

+0

위대한 .. 지금 일하고 있습니다. 감사. – user3408139