2011-09-11 6 views
5

저는 시뮬레이션 연구를 진행 중이며 여러 텍스트 파일의 결과를 처리하고 저장해야합니다. 서브 디렉토리가있는 방식으로 데이터를 정리하고 각 서브 디렉토리 내에 1000 개의 데이터 파일에 대한 개별 결과를 처리해야합니다. 이것은 매크로를 사용하여 SAS에서 매우 쉽게 수행 할 수 있습니다. 그러나 나는 R에 익숙하지 않으며 그러한 일을하는 방법을 알 수 없다. 아래는 내가 성취하려고하는 것입니다.처리를 위해 여러 디렉토리에서 여러 파일을 어떻게 R로 읽을 수 있습니까?

DATA Folder-> DC1 -> DC1R1.txt ... DC1R1000.txt 
       DC2 -> DC2R1.txt ... DC2R1000.txt 

모든 도움을 주시면 감사하겠습니다.

+0

'list.files'을 사용해보세요. http://stackoverflow.com/search?q=%5Br%5D+list.files –

답변

7

내가 지금 R과 컴퓨터 근처에 아니지만, 파일 관련 기능에 대한 도움말 읽어

dir 기능은 파일과 디렉토리를 나열됩니다. 재귀 적 인수가 있습니다. list.filesdir의 별명입니다. file.info 함수는 경로가 디렉토리이고 file.path이 경로 부분을 결합하는지 (다른 것들 중에서) 알려줍니다.

basenamedirname 기능이 유용 할 수도 있습니다.

이러한 모든 기능은 벡터화되어 있습니다. 당신은, 예를 들어, RSPerl의 인터페이스를 파일의 목록을 얻을 사용하여 R로 전송 펄의 glob() 기능을 사용할 수 있습니다

# Make a function to process each file 
processFile <- function(f) { 
    df <- read.csv(f) 
    # ...and do stuff... 
    file.info(f)$size # dummy result 
} 

# Find all .csv files 
files <- dir("/foo/bar/", recursive=TRUE, full.names=TRUE, pattern="\\.csv$") 

# Apply the function to all files. 
result <- sapply(files, processFile) 
+0

답변 해 주셔서 감사합니다. @ 토미 ..... 지금까지 코딩이 진행 중입니다 ... 손가락이 엇갈 렸습니다 .... 각 조건에서 1000 개의 시뮬레이션 파일이있는 768 개의 데이터 조건이 있습니다. 처리하는 데는 시간이 걸릴 것이므로 일단 완료되면 상태를 제공 할 것입니다. – Stefanie

0

: 이제 컴퓨터에서

편집, 그래서 여기에 예입니다.

+0

안녕하세요. Perl에 익숙하지 않습니다. 저는 통계 학자이며 그런 통계를 사용할 필요가 없습니다. 비록 .... 나는 그것이 꽤 강력하다고 들었지만. – Stefanie

3

각 파일에 대해 동일한 분석을 실행해야한다면 list.files(recursive = T)을 사용하여 한 번에 액세스 할 수 있습니다. 이미 작업 디렉토리를 Data Folder으로 설정했다고 가정합니다. recursive = T에는 서브 디렉토리에있는 모든 파일도 나열됩니다.

+0

감사합니다 Ramnath. 나는 결코 list.files 그러나 시도를 줄 것이다. 토미의 코딩이 지금까지 작동하고 있습니다. – Stefanie

2

filenames <- list.files("path/to/files", recursive=TRUE) 이렇게하면 하나의 폴더와 하위 폴더 아래에있는 모든 파일이 제공됩니다.

관련 문제