Menu
CoddyTech

Modyfikowanie list

Część sekcji Podstawy ścieżki R w Coddy. Lekcja 73 z 78.

Skoro wiesz już, jak tworzyć listy i uzyskiwać dostęp do ich elementów, nauczmy się je modyfikować. Możesz zmieniać istniejące elementy, dodawać nowe lub całkowicie usuwać elementy.

Aby zmienić istniejący element, użyj podwójnych nawiasów i przypisania:

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

Wynik:

[[1]]
[1] 10

[[2]]
[1] "world"

[[3]]
[1] TRUE

Aby dodać nowy element, wystarczy przypisać wartość do indeksu, który jeszcze nie istnieje:

my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)

Wynik:

[[1]]
[1] 10

[[2]]
[1] "hello"

[[3]]
[1] FALSE

Aby usunąć element, przypisz mu NULL:

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

Wynik:

[[1]]
[1] 10

[[2]]
[1] TRUE

Zauważ, że po usunięciu drugiego elementu pozostałe elementy przesuwają się, aby wypełnić lukę. Element, który znajdował się na pozycji 3, jest teraz na pozycji 2.

challenge icon

Wyzwanie

Łatwy

Otrzymasz trzy wiersze danych wejściowych:

  1. Trzy wartości oddzielone przecinkami, które posłużą do zainicjowania listy (np. 50,hello,TRUE)
  2. Indeks i nowa wartość oddzielone przecinkiem, które posłużą do modyfikacji (np. 2,goodbye)
  3. Indeks elementu do usunięcia (np. 3)

Wykonaj następujące operacje:

  1. Utwórz listę zawierającą trzy początkowe wartości (przekonwertuj je na odpowiednie typy: numeryczny, znakowy, logiczny)
  2. Wyświetl oryginalną listę
  3. Zmodyfikuj element o podanym indeksie, używając nowej wartości (pozostaw ją jako ciąg znaków)
  4. Wyświetl listę po modyfikacji
  5. Dodaj do listy nowy, czwarty element o wartości 999
  6. Wyświetl listę po dodaniu nowego elementu
  7. Usuń element o podanym indeksie (z trzeciego wiersza danych wejściowych)
  8. Wyświetl końcową listę

Na przykład, jeśli dane wejściowe to:

100,world,FALSE
1,updated
2

Wynik powinien być następujący:

[[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

Wyjaśnienie:

  • Oryginalna lista: 100, "world", FALSE
  • Po modyfikacji indeksu 1: "updated", "world", FALSE
  • Po dodaniu czwartego elementu: "updated", "world", FALSE, 999
  • Po usunięciu indeksu 2: "updated", FALSE, 999 (pozostałe elementy przesuwają się)

Pamiętaj, aby do modyfikacji używać podwójnych nawiasów [[ ]], a do usuwania elementów przypisać NULL.

Spróbuj swoich sił

# Wczytaj dane wejściowe
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1))  # Trzy wartości oddzielone przecinkami
modify_input <- suppressWarnings(readLines(con, n = 1))    # Indeks i nowa wartość
remove_index <- suppressWarnings(readLines(con, n = 1))    # Indeks elementu do usunięcia
close(con)

# Przetwórz wartości początkowe
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])

# Przetwórz dane wejściowe dotyczące modyfikacji
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]

# Przetwórz indeks elementu do usunięcia
rem_index <- as.numeric(remove_index)

# TODO: Napisz swój kod poniżej
# 1. Utwórz listę z trzema wartościami początkowymi (val1, val2, val3)
# 2. Wyświetl pierwotną listę
# 3. Zastąp element o indeksie mod_index wartością mod_value
# 4. Wyświetl listę po modyfikacji
# 5. Dodaj nowy, czwarty element o wartości 999
# 6. Wyświetl listę po dodaniu elementu
# 7. Usuń element o indeksie rem_index (użyj NULL)
# 8. Wyświetl końcową listę
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator R online