使用一个带有布尔值的列表来过滤另一个列表
Using one list with boolean to filter another list
我有 2 个列表:
>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) 作为掩码从 work.list 中提取下一个输出:
>output.list
$vector1
[1] "a" "c"
$vector2
[1] "e"
是否有避免循环、lapply 等的优雅决策?
使用 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"))
我有 2 个列表:
>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) 作为掩码从 work.list 中提取下一个输出:
>output.list
$vector1
[1] "a" "c"
$vector2
[1] "e"
是否有避免循环、lapply 等的优雅决策?
使用 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"))