Listeleri Düzenleme
Coddy'nin R Journey'sinin Temeller bölümünün bir parçası — ders 73 / 78.
Artık listeleri nasıl oluşturacağınızı ve öğelerine nasıl erişeceğinizi bildiğinize göre, onları nasıl değiştireceğinizi öğrenelim. Mevcut öğeleri değiştirebilir, yenilerini ekleyebilir veya öğeleri tamamen kaldırabilirsiniz.
Mevcut bir öğeyi değiştirmek için atama ile birlikte çift köşeli parantez kullanın:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"
print(my_list)Çıktı:
[[1]]
[1] 10
[[2]]
[1] "world"
[[3]]
[1] TRUEYeni bir öğe eklemek için, henüz mevcut olmayan bir dizine atama yapmanız yeterlidir:
my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)Çıktı:
[[1]]
[1] 10
[[2]]
[1] "hello"
[[3]]
[1] FALSEBir öğeyi kaldırmak için ona NULL atayın:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL
print(my_list)Çıktı:
[[1]]
[1] 10
[[2]]
[1] TRUEİkinci öğeyi kaldırdıktan sonra, kalan öğelerin boşluğu doldurmak için kaydığına dikkat edin. 3. konumda olan öğe artık 2. konumdadır.
Görev
KolayÜç satırlık bir girdi alacaksınız:
- Bir listeyi başlatmak için virgülle ayrılmış üç değer (örneğin,
50,hello,TRUE) - Değişiklik yapmak için virgülle ayrılmış bir dizin ve yeni bir değer (örneğin,
2,goodbye) - Kaldırılacak öğenin dizini (örneğin,
3)
Aşağıdaki işlemleri gerçekleştirin:
- Üç başlangıç değeriyle bir liste oluşturun (bunları uygun türlere dönüştürün: sayısal, karakter, mantıksal)
- Orijinal listeyi yazdırın
- Belirtilen dizindeki öğeyi yeni değerle değiştirin (karakter dizisi olarak tutun)
- Değişiklikten sonra listeyi yazdırın
- Listeye
999değeriyle yeni bir dördüncü öğe ekleyin - Yeni öğe eklendikten sonra listeyi yazdırın
- Belirtilen dizindeki öğeyi kaldırın (üçüncü girdiden gelen dizin)
- Son listeyi yazdırın
Örneğin, girdiler şunlar ise:
100,world,FALSE
1,updated
2Çıktı şu şekilde olmalıdır:
[[1]]
[1] 100
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[4]]
[1] 999
[[1]]
[1] "updated"
[[2]]
[1] FALSE
[[3]]
[1] 999Açıklama:
- Orijinal liste: 100, "world", FALSE
- 1. dizin değiştirildikten sonra: "updated", "world", FALSE
- Dördüncü öğe eklendikten sonra: "updated", "world", FALSE, 999
- 2. dizin kaldırıldıktan sonra: "updated", FALSE, 999 (kalan öğeler kayar)
Değişiklikler için çift köşeli parantez [[ ]] kullanmayı ve öğeleri kaldırmak için NULL atamayı unutmayın.
Kopya kağıdı
Bir listedeki mevcut bir öğeyi değiştirmek için atama ile birlikte çift köşeli parantez kullanın:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"Bir listeye yeni bir öğe eklemek için henüz mevcut olmayan bir dizine atama yapın:
my_list <- list(10, "hello")
my_list[[3]] <- FALSEBir listeden bir öğeyi kaldırmak için ona NULL atayın:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULLBir öğe kaldırıldığında, kalan öğeler boşluğu doldurmak için kayar. 3. konumdaki öğe 2. konumdaki öğe haline gelir.
Kendin dene
# Girdiyi oku
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1)) # Virgülle ayrılmış üç değer
modify_input <- suppressWarnings(readLines(con, n = 1)) # İndeks ve yeni değer
remove_index <- suppressWarnings(readLines(con, n = 1)) # Kaldırılacak indeks
close(con)
# Başlangıç değerlerini ayrıştır
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])
# Modifikasyon girdisini ayrıştır
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]
# Kaldırma indeksini ayrıştır
rem_index <- as.numeric(remove_index)
# TODO: Kodunuzu aşağıya yazın
# 1. Üç başlangıç değeriyle (val1, val2, val3) bir liste oluşturun
# 2. Orijinal listeyi yazdırın
# 3. mod_index konumundaki öğeyi mod_value ile değiştirin
# 4. Değişiklikten sonraki listeyi yazdırın
# 5. 999 değerine sahip yeni bir dördüncü öğe ekleyin
# 6. Ekleme işleminden sonraki listeyi yazdırın
# 7. rem_index konumundaki öğeyi kaldırın (NULL kullanın)
# 8. Nihai listeyi yazdırınBu 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 Girdi11Vektörler
c() ile Vektör OluşturmaVektör Elemanlarına ErişmeVektörleri DeğiştirmeVektör İşlemleriÖzet - Fiyat VektörüÖzet - Ters Çevrilmiş Vektörİsimlendirilmiş Vektörler14R'da Listeler
Liste OluşturmaListe Elemanlarına ErişmeListeleri Düzenlemeİsimlendirilmiş ListelerÖzet - Ürün Listesi3Operatö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ğerleri