【问题标题】:R remove an object from a list of vectorsR从向量列表中删除一个对象
【发布时间】:2015-08-24 13:43:01
【问题描述】:

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

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

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

【问题讨论】:

  • 我尝试了 blocks[[3]][3]

标签: r list vector


【解决方案1】:

我们也可以使用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"

【讨论】:

    【解决方案2】:

    如果您想删除列表中第三个元素的第三个元素,您可以尝试:

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

    如果要删除所有等于“F”的元素,可以使用lapply 和用户定义的函数来处理列表中的每个向量,删除所有“F”元素。

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

    【讨论】:

      猜你喜欢
      • 2018-07-08
      • 1970-01-01
      • 2021-07-11
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 2014-05-05
      • 1970-01-01
      相关资源
      最近更新 更多