我有一个矢量列表,我想删除一个特定的对象。有什么想法可以实现这个目标吗?
假设我想删除对象F.我该怎么做?
blocks <- list(
c("A", "B"),
c("C"),
c("D","E", "F")
)
答案 0 :(得分:3)
如果您想删除列表第三个元素的第三个元素,可以尝试:
blocks[[3]] <- blocks[[3]][-3]
blocks
# [[1]]
# [1] "A" "B"
#
# [[2]]
# [1] "C"
#
# [[3]]
# [1] "D" "E"
如果你想删除所有等于&#34; F&#34;的元素,你可以使用lapply
和用户定义的函数来处理列表中的每个向量,删除所有&#34; F& #34;元件。
lapply(blocks, function(x) x[x != "F"])
# [[1]]
# [1] "A" "B"
#
# [[2]]
# [1] "C"
#
# [[3]]
# [1] "D" "E"
答案 1 :(得分:3)
我们也可以将setdiff
与Map
Map(setdiff, blocks, 'F')
#[[1]]
#[1] "A" "B"
#[[2]]
#[1] "C"
#[[3]]
#[1] "D" "E"
或lapply
lapply(blocks, setdiff, 'F')
#[[1]]
#[1] "A" "B"
#[[2]]
#[1] "C"
#[[3]]
#[1] "D" "E"