Karakterler Üzerinde Yineleme (strsplit)
Coddy'nin R Journey'sinin Temeller bölümünün bir parçası — ders 65 / 78.
Bir dizedeki her bir karakteri ayrı ayrı işlemeniz gerekirse ne olur? Vektörlerin aksine, R'da bir dizenin karakterleri arasında doğrudan döngü kuramazsınız. strsplit() fonksiyonu, bir dizeyi karakterlerden oluşan bir vektöre bölerek bu sorunu çözer.
strsplit() fonksiyonu iki argüman alır: bölünecek dize ve ayırıcı. Bireysel karakterlere bölmek için ayırıcı olarak boş bir dize "" kullanın:
word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)Çıktı:
[1] "h" "e" "l" "l" "o"Sonundaki [[1]] kısmına dikkat edin. Bunun nedeni strsplit() fonksiyonunun bir liste döndürmesidir ve karakter vektörümüzü elde etmek için ilk elemanı ayıklamamız gerekir. Karakterleri bir vektör olarak aldığınızda, daha önce öğrendiğiniz teknikleri kullanarak bunlar üzerinde döngü oluşturabilirsiniz:
word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
print(char)
}Çıktı:
[1] "R"Bu teknik; belirli karakterleri sayma, dizeleri tersine çevirme veya girdiyi karakter karakter doğrulama gibi görevler için gereklidir.
Görev
KolayBir kelime içeren tek bir satırlık girdi alacaksınız (örneğin, programming).
Dizeyi tek tek karakterlere bölmek için strsplit() kullanarak:
- Girdi kelimesini bir karakter vektörüne bölün
- Vektördeki her bir karakter üzerinde döngü kurun
"a"harfinin kelime içinde kaç kez geçtiğini sayın (büyük-küçük harf duyarlı)- Her bir karakteri
print()kullanarak kendi satırında yazdırın - Döngüden sonra, sayımı
cat()kullanarak şu formatta yazdırın:Count of 'a': Xve ardından bir yeni satır ekleyin
Örneğin, girdi şu şekildeyse:
bananaÇıktı şu şekilde olmalıdır:
[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3Açıklama: "banana" kelimesi c("b", "a", "n", "a", "n", "a") karakterlerine bölünür. Her karakter yazdırılır ve "a" harfi 3 kez görünür.
Kopya kağıdı
Bir dizeyi tek tek karakterlere bölmek için, ayırıcı olarak boş bir dize "" ile strsplit() fonksiyonunu kullanın:
word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)Çıktı:
[1] "h" "e" "l" "l" "o"[[1]], strsplit() tarafından döndürülen listeden ilk öğeyi çıkararak size bir karakter vektörü verir.
Ardından karakterler arasında döngü kurabilirsiniz:
word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
print(char)
}Kendin dene
# Girdiyi oku
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))
# 'a' harfi için sayacı başlat
count_a <- 0
# YAPILACAK: Kodunuzu aşağıya yazın
# 1. Kelimeyi tek tek karakterlere ayırmak için strsplit() kullanın
# 2. Her bir karakteri döngü ile dönün
# 3. print() kullanarak her bir karakteri yazdırın
# 4. 'a' harfinin kaç kez geçtiğini sayın
# 'a' sayısını çıktı olarak ver
cat("Count of 'a': ", count_a, "\n", sep = "")Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 2
Mantıksal Operatörler (AND, OR)Mantıksal Operatörler Bölüm 2 (NOT)Özet - Basit MantıkVektörize Mantık Bölüm 1Vektörize Mantık Bölüm 27Hesap Paylaşım Hesaplayıcısı
Hoş Geldiniz MesajıKullanıcıdan Girdi Alma10Farklı Bir FizzBuzz
Oyuna Genel BakışFizzBuzz Fonksiyonu2Değişkenler ve Veri Tipleri
Sayısal Veri TipiTam Sayı Veri TipiKarakter Veri TipiMantıksal Veri TipiVeri Tiplerini Kontrol Etmeİsimlendirme KurallarıEksik Değerler: NAÖzet - Değişken Oluşturma8Döngüler
For DöngüsüWhile DöngüsüBreakNext (Continue)Özet - FaktöriyelDizi Oluşturma (seq, :)İç İçe DöngülerÖzet - Dinamik Girdi3Operatörler 1. Bölüm
Aritmetik OperatörlerTam Sayı Bölmesi ve Mod AlmaAtama OperatörleriÖzet - Basit MatematikKarşılaştırma Operatörleri6Temel Giriş-Çıkış
Print ÇıktısıÇıktı için Cat KullanımıDeğişkenlerle Çıktı Almakreadline() ile Girdi OkumaTip Dönüşümü TemelleriÖzet - Yaş HesaplayıcıÖzet - Doğru mu Yanlış mı9Fonksiyonlar
Fonksiyon TanımlamaFonksiyon ArgümanlarıDönüş DeğerleriÖzet - Sigma FonksiyonuÖzet - Doğrulama FonksiyonuVarsayılan Parametre Değerleri12Diziler Üzerinde Yineleme
Vektör Elemanları Üzerinde Yinelemeseq_along() KullanımıKarakterler Üzerinde Yineleme (strsplit)String Manipülasyon Fonksiyonları