R : 폴더의 모든 파일의 텍스트 변경

Noruas :

나는 변경하기 위해 노력하고있어 , 에 (쉼표) . R.를 사용하여 폴더에 특정에 내 텍스트 파일의 모두 (점) 그러나 나는하지 수동으로 파일 경로의 각 시간을 넣어 싶어. 대신에 나는 폴더에있는 .TXT 파일을 모두 돌이를 원하고, 같은 장소에서 같은 이름으로 다시 그냥 저장 한 다음 그들을 변화 등을 확인합니다.

지금 현재 내가이 변하기 쉬워 변수를 사용하여 경로를 설정하기 위해 시도 writeLines 기능에 문제가이 오류 메시지의 결과로, 작동하지 않는 것 :

"writeLines (TX2, 경로 때 listFiles = [I])에 오류가 미 인자 (경로 때 listFiles = [I])"

이것은 내 curent 코드 초안 :

folder_path <- "C:/Users/pathToMyFiles"
setwd(folder_path)
listFiles= list.files(path = "C:/Users/pathToMyFiles", pattern= "*.TXT",
           full.names = TRUE)

#print(listFiles)
#print(listFiles[1])

i=1
for (i in length(listFiles)) {
  tx  <- readLines(listFiles[i])
  tx2  <- gsub(pattern = ",", replace = ".", x = tx)
  writeLines(tx2, path = listFiles[i])
  i <- i + 1
}

모든 코드의 단계의 생산 출력에서 ​​볼 때 "writeLines"기능을 제외하고 작동하는 것 같다.

누군가가이를 해결 알고 있다면 감사하겠습니다.

모두 제일 좋다!

Oszkar :

작업에 대한 솔루션을 청소 :

setwd('C:/Users/pathToMyFiles')

text_file_list <- list.files(pattern='*.txt')
for (text_file in text_file_list) {
  text_from_file <- readLines((text_file))
  modified_text <- gsub(',', '.', text_from_file)
  writeLines(modified_text, text_file)
}

그리고 (이 시간 디렉토리를 변경하지 않고) 파이프를 사용하여 루프 무료 솔루션 :

library(magrittr)

{text_file_list <- list.files(path='C:/Users/pathToMyFiles',
                              pattern='*.txt',
                              full.names=TRUE)} %>%
  lapply(readLines) %>%
  lapply(function(x) gsub(',', '.', x)) %>%
  {mapply(function(x, y) writeLines(x, y), ., text_file_list)}

코드의 일부 의견 :

  1. 후에 setwd()당신은 필요하지 않습니다 pathfull.names에 인수를 list.files(). 방법을 구입, 그것은 좋은 방법은 (r2evans @로 지적) 그 인수를 사용해야 물론보다, 코드에서 디렉토리를 변경하지 않는 것입니다.
  2. 당신은 필요하지 않습니다 i = 1i <- i + 1에 대한 for루프
  3. 오류가 있었다 어디에 : 당신은 사용해야합니다 i in 1:length(fileList). 당신이 사용한 방법은 목록에서 마지막 파일을 변경했습니다.
  4. 다른 모든 변경은 화장품입니다

추천

출처http://10.200.1.11:23101/article/api/json?id=392472&siteId=1