문자열 검색
Coddy R 여정의 논리와 흐름 섹션에 포함된 레슨. 64개 중 4번째.
grepl(pattern, x)는 pattern을 포함하는 x의 각 요소에 대해 TRUE를 반환합니다. 정확한 문자를 검색하려면 fixed = TRUE를 추가하세요. 이를 생략하면 패턴은 정규 표현식으로 처리되며, . 및 ?와 같은 문자는 특별한 의미를 갖습니다.
files <- c("report.csv", "photo.png", "data.csv")
print(grepl(".csv", files, fixed = TRUE))
print(files[grepl(".csv", files, fixed = TRUE)])출력:
[1] TRUE FALSE TRUE
[1] "report.csv" "data.csv" startsWith(x, prefix)와 endsWith(x, suffix)는 각 문자열의 시작 또는 끝만 확인합니다. 이러한 검색은 모두 대소문자를 구분하므로, 대소문자를 무시하려면 먼저 tolower()로 변환하세요.
names <- c("Anna", "bob", "Andre")
print(startsWith(names, "An"))
print(startsWith(tolower(names), "b"))출력:
[1] TRUE FALSE TRUE
[1] FALSE TRUE FALSE결과는 논리형 벡터이므로 sum()은 일치하는 항목의 개수를 세고 any()는 하나 이상 있는지 확인합니다:
emails <- c("a@x.com", "bad-address", "c@y.org")
valid <- grepl("@", emails, fixed = TRUE)
print(sum(valid))
print(any(!valid))출력:
[1] 2
[1] TRUEgrep(pattern, x)는 일치하는 요소의 위치를 반환하고, grep(pattern, x, value = TRUE)는 해당 요소 자체를 반환합니다:
files <- c("a.csv", "b.txt", "c.csv")
print(grep(".csv", files, fixed = TRUE))
print(grep(".csv", files, fixed = TRUE, value = TRUE))출력:
[1] 1 3
[1] "a.csv" "c.csv"챌린지
쉬움count_domain(emails, domain)을 완성하세요. emails의 주소 중 @ 뒤에 domain이 오는 주소의 개수를 반환하세요. 대소문자를 구분하지 않습니다. CY@CODDY.TECH는 도메인 coddy.tech에 해당하는 것으로 계산됩니다.
제공된 코드는 주소를 쉼표로 구분된 한 줄로 읽은 다음 도메인을 읽고, 반환된 숫자를 출력합니다.
직접 해보기
count_domain <- function(emails, domain) {
# 여기에 코드를 작성하세요
0
}
# 제공된 입력/출력 코드: 그대로 유지하세요
input <- suppressWarnings(readLines(file("stdin")))
emails <- strsplit(input[1], ",")[[1]]
cat(count_domain(emails, input[2]), sep = "\n")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 R 컴파일러