Liste Elemanlarına Erişme
Coddy'nin R Journey'sinin Temeller bölümünün bir parçası — ders 72 / 78.
Listeler, vektörlere kıyasla elemanlara erişmek için farklı bir söz dizimi kullanır. Temel fark, tek köşeli parantez [ ] ile çift köşeli parantez [[ ]] arasındadır.
Çift köşeli parantezler, listeden gerçek öğeyi çıkarır:
my_list <- list(42, "hello", TRUE)
print(my_list[[1]])Çıktı:
[1] 42Tek köşeli parantezler, öğenin kendisini değil, öğeyi içeren bir alt liste döndürür:
my_list <- list(42, "hello", TRUE)
print(my_list[1])Çıktı:
[[1]]
[1] 42Gerçek değerle çalışmak istediğinizde bu ayrım önem kazanır. Eğer bir liste öğesi bir vektörse, çift köşeli parantezler ona doğrudan erişmenizi ve ardından vektör indekslemeyi kullanmanızı sağlar:
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])Çıktı:
[1] 20Burada, my_list[[1]] vektörü getirir ve [2] onun ikinci elemanına erişir. Unutmayın: gerçek içeriğe ihtiyaç duyduğunuzda [[ ]], daha küçük bir liste istediğinizde ise [ ] kullanın.
Görev
Kolayİki satırlık bir girdi alacaksınız:
- Farklı türlerde virgülle ayrılmış üç değer (örneğin,
100,hello,TRUE) - Dördüncü öğe olarak saklanacak bir vektörü temsil eden virgülle ayrılmış sayılar listesi (örneğin,
5,10,15,20)
Aşağıdaki işlemleri gerçekleştirin:
- Dört öğeli bir liste oluşturun: sayısal değer, metin, mantıksal değer ve sayı vektörü
- İkinci öğeyi (metin değeri) çıkarmak ve yazdırmak için çift köşeli parantez kullanın
- Üçüncü öğeyi çıkarmak için tek köşeli parantez kullanın ve sonucu yazdırın (çıktı formatındaki farka dikkat edin)
- Çift köşeli parantez kullanarak dördüncü öğede saklanan vektöre erişin, ardından vektör indeksleme kullanarak üçüncü değerini çıkarın ve yazdırın
- Dördüncü öğedeki tüm sayıların toplamını yazdırın (vektöre çift köşeli parantez ile erişin ve
sum()kullanın)
Örneğin, girdiler şunlarsa:
42,world,FALSE
8,16,24,32,40Çıktı şöyle olmalıdır:
[1] "world"
[[1]]
[1] FALSE
[1] 24
[1] 120Açıklama:
my_list[[2]]gerçek metin değerini çıkarır: "world"my_list[3]FALSE değerini içeren bir alt liste döndürür (çıktıdaki[[1]]ifadesine dikkat edin)my_list[[4]][3]vektöre erişir, ardından üçüncü öğesini alır: 24sum(my_list[[4]])8+16+24+32+40 = 120 işlemini hesaplar
Kopya kağıdı
Listeler, elemanlara erişmek için farklı köşeli parantez sözdizimi kullanır:
Çift köşeli parantez [[ ]] gerçek elemanı çıkarır:
my_list <- list(42, "hello", TRUE)
print(my_list[[1]]) # Çıktı: [1] 42Tek köşeli parantez [ ] elemanı içeren bir alt liste döndürür:
my_list <- list(42, "hello", TRUE)
print(my_list[1]) # Çıktı: [[1]] [1] 42İç içe geçmiş elemanlara erişim: Bir listeden bir vektör çıkarmak için çift köşeli parantez kullanın, ardından vektör indekslemeyi kullanın:
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2]) # Çıktı: [1] 20Gerçek içeriğe ihtiyacınız olduğunda [[ ]], daha küçük bir liste istediğinizde ise [ ] kullanın.
Kendin dene
# Girişi oku
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1)) # Birinci satır: virgülle ayrılmış üç değer
input2 <- suppressWarnings(readLines(con, n = 1)) # İkinci satır: vektör için virgülle ayrılmış sayılar
close(con)
# İlk giriş satırını ayrı değerlere ayrıştır
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])
# İkinci giriş satırını sayısal bir vektöre ayrıştır
vector_val <- as.numeric(strsplit(input2, ",")[[1]])
# TODO: Kodunuzu aşağıya yazın
# 1. Dört öğeli bir liste oluşturun: numeric_val, text_val, logical_val ve vector_val
# 2. İkinci öğeyi çıkarmak ve yazdırmak için çift köşeli parantez [[ ]] kullanın
# 3. Üçüncü öğeyi çıkarmak için tek köşeli parantez [ ] kullanın ve yazdırın
# 4. Çift köşeli parantez ile dördüncü öğeye erişin, ardından onun üçüncü değerini çıkarın
# 5. Dördüncü öğedeki tüm sayıların toplamını 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