Menu
CoddyTech

Mencari string

Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 4 dari 64.

grepl(pattern, x) mengembalikan TRUE untuk setiap elemen x yang berisi pattern. Tambahkan fixed = TRUE untuk mencari karakter yang persis sama. Tanpa itu, pattern akan dianggap sebagai ekspresi reguler, dengan karakter seperti . dan ? yang memiliki makna khusus.

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

Output:

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

startsWith(x, prefix) dan endsWith(x, suffix) hanya memeriksa bagian awal atau akhir setiap string. Semua pencarian ini peka huruf besar-kecil, jadi gunakan tolower() terlebih dahulu agar tidak peka huruf besar-kecil.

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

Output:

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

Hasilnya adalah vektor logika, jadi sum() menghitung kecocokan dan any() memeriksa apakah ada setidaknya satu:

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

Output:

[1] 2
[1] TRUE

grep(pattern, x) mengembalikan posisi elemen yang cocok, sedangkan grep(pattern, x, value = TRUE) mengembalikan elemen itu sendiri:

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

Output:

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

Tantangan

Mudah

Lengkapi count_domain(emails, domain). Kembalikan jumlah alamat di emails yang diakhiri dengan @ diikuti oleh domain. Abaikan perbedaan huruf besar-kecil: CY@CODDY.TECH dihitung untuk domain coddy.tech.

Code yang disediakan membaca alamat sebagai baris yang dipisahkan koma, lalu membaca domain, dan mencetak angka yang dikembalikan.

Coba sendiri

count_domain <- function(emails, domain) {
  # Tulis kodemu di sini
  0
}

# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
emails <- strsplit(input[1], ",")[[1]]
cat(count_domain(emails, input[2]), sep = "\n")
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler R online