代码之家  ›  专栏  ›  技术社区  ›  trilisser

使用一个带有布尔值的列表筛选另一个列表

  •  1
  • trilisser  · 技术社区  · 4 年前

    我有两个清单:

    >logical.list  
    $mask1  
    [1] TRUE FALSE TRUE  
    $mask2  
    [1] FALSE TRUE FALSE  
    
    >work.list  
    $vector1  
    [1] "a" "b" "c"  
    $vector2  
    [1] "d" "e" "f"  
    

    我想使用第一个(logical.list)作为掩码,从工作中提取下一个输出。清单:

    >output.list  
    $vector1  
    [1] "a" "c"  
    $vector2  
    [1] "e"  
    

    是否有一个优雅的决定避免循环、重叠等。?

    1 回复  |  直到 4 年前
        1
  •  0
  •   jay.sf    4 年前

    提取 Map .

    Map(`[`, work.list, logical.list)
    # $vector1
    # [1] "a" "c"
    # 
    # $vector2
    # [1] "e"
    

    数据:

    logical.list) <- list(mask1 = c(TRUE, FALSE, TRUE), mask2 = c(FALSE, TRUE, FALSE
    ))
    work.list <- list(vector1 = c("a", "b", "c"), vector2 = c("d", "e", "f"))