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ırlık bir girdi alacaksınız:

  1. Farklı türlerde virgülle ayrılmış üç değer (örneğin, 100,hello,TRUE)
  2. 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:

  1. Dört öğeli bir liste oluşturun: sayısal değer, metin, mantıksal değer ve sayı vektörü
  2. İkinci öğeyi (metin değeri) çı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 sonucu yazdırın (çıktı formatındaki farka dikkat edin)
  4. Ç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
  5. 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] 120

Açı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: 24
  • sum(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] 42

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

Gerç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ı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