2014-02-11 5 views
1

디렉토리의 특정 파일을 복사하려고하는데 스택 오버플로 덕분에이 기능을 사용하고 있습니다.R의 파일 이름에서 "도트"를 제어하는 ​​방법은 무엇입니까?

f <- list.files(path = "C:\\New folder (3)" , pattern = "*.envi" , full.names = TRUE) 
    n <- 5 
    lapply(seq_len(length(f)) , function(x) { lapply(seq_len(n) , function(x ,y){ 
    file.copy(f[x] , paste0(sub("^([^.]*).*", "\\1", f[x]) , "-" , y , ".envi")) 
    } , x = x) 
    }) 

이 작업은 정상적으로 수행되었지만 제 파일의 이름에 점들이 여러 개 있습니다.

예 내 파일 :

  sm.0001.sgridand138.envi 

코드가

   sm-1.envi 

생산을하지만 두 번째 점을 고려

  sm.0001-1.envi 

어떤 힌트

답변

2
을 기쁘게되고 싶어요

이 답변은 뒤쪽에서부터 계산 한 두 번째 점에서 시작하는 문자열 부분을 잘라 내고 싶다고 가정합니다. 새로운 표현 수익률

> sub("^(.*)\\.[^.]*\\.[^.]*$", "\\1", "this.is.a.test") 
[1] "this.is" 
+1

이 구조의 목적은 수정 된 이름과 같은 디렉토리에 파일을 복제하는 것입니다 f[x] <- "this.is.a.test를 들어

sub("^(.*)\\.[^.]*\\.[^.]*$", "\\1", f[x]) 


에 의해

sub("^([^.]*).*", "\\1", f[x]) 

교체합니다. R 반환 값은 file.copy 작업이 성공했는지 여부를 나타냅니다. 내 컴퓨터에서 코드는 원하는 형식의 새 파일을 생성했습니다. 어쩌면 file.copy가 대상 디렉토리에 대한 쓰기 권한이 없기 때문에 실패했을 수 있습니까? – Georg

관련 문제