简体   繁体   English

R从向量列表中删除对象

[英]R remove an object from a list of vectors

I have a list of vectors and i would like to remove a specific object. 我有一个向量列表,我想删除一个特定的对象。 Any ideas hot to achieve that? 有什么想法可以实现这一目标吗?

Lets say i would like to remove the object F. How can i do that? 可以说我想删除对象F。我该怎么做?

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

We could also use setdiff with Map 我们也可以在Map使用setdiff

Map(setdiff, blocks, 'F')
#[[1]]
#[1] "A" "B"

#[[2]]
#[1] "C"

#[[3]]
#[1] "D" "E"

or with lapply lapply

lapply(blocks, setdiff, 'F')
#[[1]]
#[1] "A" "B"

#[[2]]
#[1] "C"

#[[3]]
#[1] "D" "E"

If you wanted to remove the third element of the third element of your list, you could try: 如果要删除列表的第三个元素中的第三个元素,可以尝试:

blocks[[3]] <- blocks[[3]][-3]
blocks
# [[1]]
# [1] "A" "B"
# 
# [[2]]
# [1] "C"
# 
# [[3]]
# [1] "D" "E"

If you wanted to remove all elements equal to "F", you could use lapply and a user-defined function to process each vector in the list, removing all "F" elements. 如果要删除所有等于“ F”的元素,则可以使用lapply和用户定义的函数来处理列表中的每个矢量,从而删除所有“ F”元素。

lapply(blocks, function(x) x[x != "F"])
# [[1]]
# [1] "A" "B"
# 
# [[2]]
# [1] "C"
# 
# [[3]]
# [1] "D" "E"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM