Menu
CoddyTech

修改列表

本课属于 Coddy R 学习旅程的“基础知识”单元。第 73 课,共 78 课。

现在你已经知道如何创建列表并访问其中的元素,接下来学习如何修改列表。你可以更改现有元素、添加新元素,也可以彻底删除元素。

要更改已有元素,请使用带赋值的双层方括号:

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

输出:

[[1]]
[1] 10

[[2]]
[1] "world"

[[3]]
[1] TRUE

要添加新元素,只需赋值给一个尚不存在的索引:

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

输出:

[[1]]
[1] 10

[[2]]
[1] "hello"

[[3]]
[1] FALSE

要移除一个元素,请将 NULL 赋给它:

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

输出:

[[1]]
[1] 10

[[2]]
[1] TRUE

请注意,删除第二个元素后,其余元素会移动来填补空位。原来位于位置 3 的元素现在位于位置 2。

challenge icon

挑战

简单

你会收到三行输入:

  1. 用逗号分隔的三个值,用于初始化列表(例如,50,hello,TRUE)
  2. 用逗号分隔的索引和新值,用于修改列表(例如,2,goodbye)
  3. 要移除的元素的索引(例如,3)

执行以下操作:

  1. 用三个初始值创建一个列表(将它们转换为相应的类型:数值型、字符型、逻辑型)
  2. 打印原始列表
  3. 用新值修改指定索引处的元素(将新值保留为字符串)
  4. 打印修改后的列表
  5. 向列表中添加一个值为 999 的第四个元素
  6. 打印添加新元素后的列表
  7. 移除指定索引处的元素(索引来自第三行输入)
  8. 打印最终列表

例如,输入如下:

100,world,FALSE
1,updated
2

输出应为:

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

说明:

  • 原始列表:100, "world", FALSE
  • 修改索引 1 后:"updated", "world", FALSE
  • 添加第四个元素后:"updated", "world", FALSE, 999
  • 移除索引 2 后:"updated", FALSE, 999(其余元素会向前移动)

记得使用双括号 [[ ]] 修改元素,并赋值 NULL 来移除元素。

亲手试试

# 读取输入
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1))  # 3 个用逗号分隔的值
modify_input <- suppressWarnings(readLines(con, n = 1))    # 索引和新值
remove_index <- suppressWarnings(readLines(con, n = 1))    # 要删除的索引
close(con)

# 解析初始值
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])

# 解析修改输入
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]

# 解析要删除的索引
rem_index <- as.numeric(remove_index)

# TODO: 在下方编写你的代码
# 1. 用 3 个初始值(val1、val2、val3)创建一个列表
# 2. 打印原始列表
# 3. 将 mod_index 位置的元素改为 mod_value
# 4. 打印修改后的列表
# 5. 添加第 4 个元素,值为 999
# 6. 输出添加后的列表
# 7. 删除 rem_index 位置的元素(使用 NULL)
# 8. 输出最终的列表
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: R 在线编译器