Menu
Coddy logo textTech

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

Yeni 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] FALSE

Bir öğ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.

challenge icon

Görev

Kolay

Üç satırlık bir girdi alacaksınız:

  1. Bir listeyi başlatmak için virgülle ayrılmış üç değer (örneğin, 50,hello,TRUE)
  2. Değişiklik yapmak için virgülle ayrılmış bir dizin ve yeni bir değer (örneğin, 2,goodbye)
  3. Kaldırılacak öğenin dizini (örneğin, 3)

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

  1. Üç başlangıç değeriyle bir liste oluşturun (bunları uygun türlere dönüştürün: sayısal, karakter, mantıksal)
  2. Orijinal listeyi yazdırın
  3. Belirtilen dizindeki öğeyi yeni değerle değiştirin (karakter dizisi olarak tutun)
  4. Değişiklikten sonra listeyi yazdırın
  5. Listeye 999 değeriyle yeni bir dördüncü öğe ekleyin
  6. Yeni öğe eklendikten sonra listeyi yazdırın
  7. Belirtilen dizindeki öğeyi kaldırın (üçüncü girdiden gelen dizin)
  8. 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] 999

Açı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]] <- FALSE

Bir listeden bir öğeyi kaldırmak için ona NULL atayın:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL

Bir öğ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ı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