반응형
작업 디렉토리에서 특정 문자열을 포함한 파일을 찾고 싶을 때가 있는데요.
이 때는 작업디렉토리에서 파일 이름을 먼저 불러와야 합니다.
아래 단계를 통해 간단하게 알 수 있는 방법이 있습니다.
1. getwd()로 작업 디렉토리 확인하기
작업 디렉토리는 사용자마다 다를 수 있습니다.
getwd() 는 현재 작업 디렉토리로 지정된 주소를 확인합니다.
저는 "C:/love_R" 이라는 곳에 지정되어 있습니다.
2. dir()로 작업 디렉토리 파일 확인하기
dir() 함수는 작업 디렉토리 안에 있는 파일들을 확인할 수 있습니다.
이 때 "covid" 문자를 포함한 파일들만 보고 싶다면 어떻게 할까요?
3. grep 함수로 문자 찾기
dir() 로 화면에 보여지는 파일들은 문자형 벡터로 주어집니다.
test_dir 변수에 할당하고 class 함수를 이용해 타입을 확인해보면 문자열 벡터임을 확인할 수 있습니다.
이때 grep 함수를 이용해서 문자를 찾습니다.
위 파일명에서 "covid" 문자만 포함하는 파일들을 찾습니다.
grep 함수는 문자형벡터에서 문자를 검색할 수 있고 그 결과값은 인덱스로 반환(중요)됩니다.
grep(찾을 문자, 문자형벡터)
# grep 함수에서 찾을 문자는 "covid" 이며 문자형 벡터는 test_dir 입니다. # 결과값이 test_dir(문자형벡터)에서 "covid"를 포함한 파일명의 인덱스를 반환합니다. grep("covid", test_dir) [1] 3 4 5 6 7 8 9 10 15 # 문자형벡터에서 위치만 알려주니까 어떤 파일명이 있는지 모릅니다. # 이제 인덱스를 파일명으로 불러옵니다. 인자에 value=TRUE를 넣어줍니다. grep('covid', test_dir, value=TRUE) [1] "covid_t.csv" "covid100.csv" "covid19.csv" [4] "covid19_1.csv" "covid19_15.csv" "covid19_2.csv" [7] "covid19_3.csv" "covid19_4.csv" "test_covid19.csv" |
위처럼 value=TRUE 인자를 넣어 특정 문자가 어떤 것인지 바로 반환할 수 있습니다
다른 방법으로는 R의 인덱스 추출 기능을 이용하여 반환할 수 있습니다.
grep("covid", test_dir) [1] 3 4 5 6 7 8 9 10 15 # [ ] 이용 test_dir[grep("covid", test_dir)] [1] "covid_t.csv" "covid100.csv" "covid19.csv" [4] "covid19_1.csv" "covid19_15.csv" "covid19_2.csv" [7] "covid19_3.csv" "covid19_4.csv" "test_covid19.csv" |
4. assign 함수로 변수 할당하기
# 반복문(for 문)을 이용해서 각 파일을 저장 # length(covid_file)는 covid_file 변수의 벡터 길이 반환함 # for 반복문과 assign함수를 이용해서 a1, a2, a3, ..., a9까지 각 파일을 저장 covid_file <- test_dir[grep("covid", test_dir)] for( i in 1:length(covid_file)){ assign(paste0("a",i), read.csv(paste0("C:/love_R/", covid_file[i]))) } # Environment 창에서 a1~a9 까지 차례로 변수에 부여된 것을 알 수 있습니다. |
반응형
'데이터 분석 > R 데이터 처리 & 분석' 카테고리의 다른 글
[R] seq 함수 (숫자 연속으로 나열하기) (0) | 2022.09.30 |
---|---|
[R] rep 함수 (반복적으로 값 산출하기) (0) | 2022.07.03 |
[R] get 함수로 문자를 변수로 인식시키기 (0) | 2021.06.07 |
[R] assign 함수 이용하여 값을 변수에 넣기 (1) | 2021.06.04 |
[R] 엑셀 파일 불러오기와 저장하기 (xls, xlsx) (3) | 2020.12.25 |