파일 이름에 고유 한 숫자 나 문자열을 추가 할 수있는 R 함수 / 루프가 있습니까?

Aug 18 2020

저는 R 및 Stack Overflow를 처음 사용합니다. 나는 내 질문에 대한 답변을 광범위하게 찾았으며 이것이 반복되는 질문이라고 생각하지 않습니다.

내 스크립트에 데이터 프레임으로로드되는 .csv 파일이 있으며 해당 데이터 프레임을 .Rda 또는 .RDS 파일로 저장해야합니다.

코드를 작성하는 방식에 따라 이전 .Rda 파일은 내가 저장 한 디렉토리에 덮어 쓰여집니다.

base::save(data, file="data.Rda")

저장시 기존 파일 이름에 임의의 숫자 또는 문자열을 첨부하는 루프를 생성하는 방법이 있습니까? 아니면 고유 ID #를 생성하는 함수도 있습니까? 내가 찾고있는 것은 다음과 같은 출력입니다.

data_1.Rda data_2.Rda data_3.Rda 등 코드를 실행할 때마다 _ #이 무작위로 생성됩니다.

나는 다음과 같은 벡터를 만들려고 노력했습니다.

x<-c(a, b, c, d, e, f, g, h, i, j, k)

그런 다음 각 개별 변수를 통해 저장하는 루프를 만들었지 만 루프는 단순히 데이터 프레임을 "a", "b", "c"로 저장했습니다. 이러한 개별 변수를 a에 연결하는 방법이 있는지 알고 싶습니다. 기존 이름 ( "data_a.Rda", "data_b.Rda"...)

나는 그것이 작동하는 한 어떤 방법에 대해서도 고집하지 않습니다.

답변

1 AllanCameron Aug 18 2020 at 03:33

다음과 같은 디렉토리가 있다고 가정합니다.

/Documents (R home)
     |
     |-- my_data
             |
             |--data_1.Rda
             |--data_2.Rda

그런 다음 다음을 사용하여 my_data디렉토리 의 파일을 나열 할 수 있습니다 .

list.files(path.expand("~/my_data/"))
#> [1] "data_1.Rda"  "data_2.Rda"

그리고 간단한 함수로 "다음"Rda 파일 경로를 생성 할 수 있습니다.

next_rda <- function() {
  f <- list.files(path.expand("~/my_data/"), pattern = "^data_\\d+\\.Rda")
  num <- max(as.numeric(gsub("^data_(\\d)\\.Rda", "\\1", f)) + 1)
  paste0(path.expand("~/my_data/data_"), num, ".Rda")
}

내가 할 수 있도록 :

next_rda()
#> [1] "C:/Users/Administrator/Documents/my_data/data_3.Rda"

즉, 객체를 저장하려면 다음을 수행 할 수 있습니다.

save(obj, file = next_rda())

다음 증분 파일에 저장됩니다. 이 함수는 매번 디렉토리를 확인하므로 항상 적절한 번호가 매겨진 새 파일에 기록합니다.

toujames Aug 18 2020 at 03:12

파일 이름의 존재를 확인합니다. 존재하는 경우 새로운 파일 이름을 만드는 정렬 메커니즘을 만듭니다. 무작위로 생성 된 문자열이든 번호 매기기 시스템이든

참고 : 다음과 같은 방법으로 하나의 rda 파일에 여러 변수를 저장할 수 있습니다.

> save(data1, data2, data3, file = "data.rda")

pseudospin Aug 18 2020 at 03:19

를보세요 ?tempfile. 사용자가 사용할 고유 한 파일 이름을 생성 할 수 있습니다.