Menu
Coddy logo textTech

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ę, jak 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 kwadratowych 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, po prostu przypisz 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 wartość 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, służące 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 wartości początkowe (przekonwertuj je na odpowiednie typy: numeryczny, znakowy, logiczny)
  2. Wyświetl oryginalną listę
  3. Zmodyfikuj element pod wskazanym indeksem, 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 pod wskazanym indeksem (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 elementu o indeksie 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