반응형
2025년 09월 06일
apt_name이 search_key와 완전일치가 안 되는 경우, 부분일치로도 찾는 second chance 만들기
# 검색 조건에 따라 필터링 (data.table 문법 사용)
filtered_data <- apt_index[apt_name == search_key]
data.table
에서는 먼저 완전일치로 찾고, 결과가 없을 때만 부분일치(like/grep)를 수행하면 돼 👍
예시는 이렇게:
# 완전일치 먼저
filtered_data <- apt_index[apt_name == search_key]
# 결과가 없는 경우 부분일치
if (nrow(filtered_data) == 0) {
filtered_data <- apt_index[grepl(search_key, apt_name)]
}
혹은 한 줄로 fifelse
같이 조건 분기 쓰는 방법도 있어:
filtered_data <- apt_index[apt_name == search_key]
filtered_data <- if (nrow(filtered_data) > 0) filtered_data
else apt_index[grepl(search_key, apt_name)]
👉 여기서 grepl(search_key, apt_name)
은 대소문자 구분 있음.
- 대소문자 무시하고 싶으면
ignore.case = TRUE
옵션 추가하면 돼.
원해? 내가 case-insensitive
버전으로도 다시 짜줄까?
전자와 후자 중에 어떤 게 코딩 컨벤션에 더 맞지?
대소문자는 무시하자.
좋은 질문 👍
보통 R/data.table 컨벤션에서는 전자 방식(완전일치 먼저, 없으면 if로 부분일치) 이 더 많이 쓰여.
이유는:
- 가독성: 한눈에 “첫 번째 조건 → fallback” 구조가 명확함
- 디버깅: 언제 부분일치로 넘어갔는지 바로 알 수 있음
- 유지보수:
nrow()
체크를 통해 로직을 쉽게 확장 가능
후자(if (...) else ...
로 한 줄 처리)는 깔끔해 보이지만, 실제 협업 코드에서는 조건문이 한 줄에 들어가면 가독성이 떨어지고 리뷰 때 다시 풀어 쓰자는 피드백 나올 확률이 높아.
따라서 첫 번째 방식을 추천할게 🚀
대소문자 무시 버전은 이렇게 쓰면 돼:
# 완전일치 먼저
filtered_data <- apt_index[apt_name == search_key]
# 결과 없으면 부분일치 (대소문자 무시)
if (nrow(filtered_data) == 0) {
filtered_data <- apt_index[grepl(search_key, apt_name, ignore.case = TRUE)]
}
👉 혹시 이걸 함수화해서 search_key
만 바꾸면 재사용 가능하게 만들어줄까?
반응형
'Prop : 부동산 > 업데이트 일지' 카테고리의 다른 글
[R] API로 수집한 일간(daily)업데이트 파일을 어제날짜 파일과 비교하는 쉬운 방법 (0) | 2025.09.24 |
---|---|
[R] 두 경로(폴더/디렉토리)에 파일들이 있을 때, 용량을 나란히 비교해서 보는 사용자 함수 (0) | 2025.09.11 |
다른 사이트에서 내 GA4 태그를 사용하면 발생하는 문제와 해결방안 (0) | 2025.09.05 |
AWS EC2 Failsafe & Maintenance Page 종합 매뉴얼 (0) | 2025.09.01 |
사이트 관리자/운영자의 구글 애드센스 무효 클릭 방지 완벽 가이드 (0) | 2025.08.30 |
댓글