R从向量列表中删除对象

时间:2015-08-24 13:43:02

标签: r list vector

我有一个矢量列表,我想删除一个特定的对象。有什么想法可以实现这个目标吗?

假设我想删除对象F.我该怎么做?

blocks <- list(
                        c("A", "B"),
                        c("C"),
                        c("D","E", "F")
    )

2 个答案:

答案 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)

我们也可以将setdiffMap

一起使用
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"