2014-10-05 2 views
2

P1.txt P2.txt ........P100.txt이라는 파일이 있습니다.R의 모든 파일에이 기능을 어떻게 적용 할 수 있습니까?

temp <- P1.txt 
colnames(temp) <- c("a","b") 
temp <- aggregate(count~a+b,transform(temp,a=pmin(a,b), b=pmax(a,b), count=1),sum) 
colnames(temp) <- c("V1","V2","V3") 
P1.txt <- temp 

어떻게 각 파일에 대해이 작업을 자동화 할 수 있습니다 : 그리고 각 파일에 다음과 같은 기능을 적용하고 싶어? 나는`paste0 ("P", i, ". txt")를 만들 수 있었는데, 1에서 100까지 다양 할 것이지만 다시 할당하는 방법을 모른다. 감사!

편집 : 개별 파일은 처음에는 2 개의 열과 1000 개의 행을 포함하는 데이터 프레임입니다. 샘플 : (P1.txt)

1 2 
3 4 
4 2 
4 5 
.... 
+0

파일의 구조에 대한 정보를 제공해주십시오. –

답변

1

만 당신이 우리에게 파일의 구조를 부여하지 않았기 때문에 부분적인 대답은 ...

이 파일에 읽고 그들을 밖으로 작성하려는 경우

예를 들어 read.csv()write.csv()과 같이 명시 적으로 수행해야합니다. 그런 다음 당신은 할 수 있습니다

for(i in 1:100) { 
    fnam <- paste('P', i, '.txt', sep='') 
    temp <- read.csv(fnam, header=FALSE) 
    # manipulate the contents... 
    colnames(temp) <- c("a", "b") 
    temp <- aggregate(count ~ a + b, 
        transform(temp, a = pmin(a, b), b = pmax(a, b), count = 1), 
        sum) 
    colnames(temp) <- c("V1", "V2", "V3") 
    # save the results 
    write.csv(temp, fnam, row.names=FALSE, col.names=FALSE) 
} 

그러나 과도하게 작성하여 P1..P100.txt 파일을 위험으로는 '정확성을 확인하기 전에이 작업을 사용하여 조심!

+0

파일 구조를 추가했습니다. –

+0

파일을 덮어 쓰지 않습니다. 그것이 내가하고 싶었던 일이지만 일어난 것은 아닙니다. 'write.table (temp, fnam)'을 사용했습니다. –

1

다음은 접근 방법입니다.

# generate list of files 
files <- list.files(pattern = "^P\\d+\\.txt$") 

for (file in files) { 
    temp <- read.table(file) 
    colnames(temp) <- c("a", "b") 
    temp <- aggregate(count ~ a + b, 
        transform(temp, a = pmin(a, b), b = pmax(a, b), count = 1), 
        sum) 
    colnames(temp) <- c("V1", "V2", "V3") 
    write.table(temp, file, row.names = FALSE) 
} 
+0

이것은'P1.txt ... P100.txt' 파일도 덮어 쓰지 않습니다. –

+0

파일을 덮어 쓰지 않습니다. 이게 문제 야. –

+0

@chanchong 파일을 덮어 쓸 수있는 권한이 있습니까? –

관련 문제