Menu
Coddy logo textTech

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] 42

Tek 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] 42

Gerç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] 20

Burada, 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.

challenge icon

Görev

Kolay

İki satır girdi alacaksınız:

  1. Farklı türlerde virgülle ayrılmış üç değer (ör. 100,hello,TRUE)
  2. Dördüncü öğe olarak depolanacak bir vektörü temsil eden virgülle ayrılmış sayı listesi (ör. 5,10,15,20)

Aşağıdaki işlemleri gerçekleştirin:

  1. Sayısal değer, metin, mantıksal değer ve sayıların vektöründen oluşan dört öğeli bir liste oluşturun
  2. İkinci öğeyi (metin değerini) çıkarmak ve yazdırmak için çift köşeli parantezleri kullanın
  3. Üçüncü öğeyi çıkarmak ve sonucu yazdırmak için tek köşeli parantezleri kullanın (çıktı biçimindeki farka dikkat edin)
  4. Çift köşeli parantezleri kullanarak dördüncü öğede depolanan vektöre erişin, ardından vektör indekslemesini kullanarak üçüncü değerini çıkarıp yazdırın
  5. Dördüncü öğedeki tüm sayıların toplamını yazdırın (vektöre çift köşeli parantezlerle erişin ve sum() kullanın)

Örneğin girdiler şöyleyse:

42,world,FALSE
8,16,24,32,40

Çıktı şöyle olmalıdır:

[1] "world"
[[1]]
[1] FALSE

[1] 24
[1] 120

Açıklama:

  • my_list[[2]] gerçek metin değerini çıkarır: "world"
  • my_list[3], FALSE 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: 24
  • sum(my_list[[4]]), 8+16+24+32+40 = 120 değerini hesaplar

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ın
quiz iconKendini test et

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

Kendi başına pratik yap: Online R derleyicisi