Menu
Coddy logo textTech

Dizelerde Arama

Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 4 / 64.

grepl(pattern, x), pattern içeren x öğelerinin her biri için TRUE döndürür. Tam karakterleri aramak için fixed = TRUE ekleyin. Bunu eklemezseniz, desen normal bir ifadeye dönüşür ve . ile ? gibi karakterlerin özel anlamları olur.

files <- c("report.csv", "photo.png", "data.csv")
print(grepl(".csv", files, fixed = TRUE))
print(files[grepl(".csv", files, fixed = TRUE)])

Çıktı:

[1]  TRUE FALSE  TRUE
[1] "report.csv" "data.csv"  

startsWith(x, prefix) ve endsWith(x, suffix) yalnızca her dizenin başlangıcını veya sonunu kontrol eder. Tüm bu aramalar büyük/küçük harfe duyarlıdır; bu nedenle büyük/küçük harfi yok saymak için önce tolower() ile dönüştürün.

names <- c("Anna", "bob", "Andre")
print(startsWith(names, "An"))
print(startsWith(tolower(names), "b"))

Çıktı:

[1]  TRUE FALSE  TRUE
[1] FALSE  TRUE FALSE

Sonuçlar mantıksal vektörlerdir; bu nedenle sum() eşleşmeleri sayar ve any() en az bir eşleşme olup olmadığını kontrol eder:

emails <- c("a@x.com", "bad-address", "c@y.org")
valid <- grepl("@", emails, fixed = TRUE)
print(sum(valid))
print(any(!valid))

Çıktı:

[1] 2
[1] TRUE

grep(pattern, x) eşleşen öğelerin konumlarını, grep(pattern, x, value = TRUE) ise öğelerin kendilerini döndürür:

files <- c("a.csv", "b.txt", "c.csv")
print(grep(".csv", files, fixed = TRUE))
print(grep(".csv", files, fixed = TRUE, value = TRUE))

Çıktı:

[1] 1 3
[1] "a.csv" "c.csv"
challenge icon

Görev

Kolay

count_domain(emails, domain) işlevini tamamla. emails içindeki kaç adresin @ işaretinin ardından domain ile bittiğini döndür. Büyük/küçük harfleri dikkate alma: CY@CODDY.TECH, coddy.tech alan adı için sayılır.

Verilen kod, adresleri virgülle ayrılmış bir satır olarak, ardından alan adını okur ve döndürülen sayıyı yazdırır.

Kendin dene

count_domain <- function(emails, domain) {
  # Kodunuzu buraya yazın
  0
}

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
emails <- strsplit(input[1], ",")[[1]]
cat(count_domain(emails, input[2]), sep = "\n")
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online R derleyicisi