purrr:多个列表的逐元素长度比较?
purrr: element-wise length comparison of multiple lists?
我有三个列表,每个列表有 2 个元素。如何检查每个列表中的每个元素是否具有相同的长度?最好使用 purrr。谢谢!
list.a = list(a = 1, b = c(1, 2))
list.b = list(a = 2, b = c(1, 2))
list.c = list(a = 3, b = c(1, 2, 3))
应该return T, T, F.
对于任意两个列表:
all(lengths(list.a)==lengths(list.b))
检查所有列表是否相等:
same_length <- function (x, y) all(lengths(x) == lengths(y))
Reduce(f, list(list.a, list.b, list.c))
如果你想使用purrr
:
same_length <- function (x, y) all(lengths(x) == lengths(y))
purrr::reduce(list(list.a, list.b, list.c), f)
每个列表中的每个元素都具有相同的长度? - 这将是单个 TRUE
或 FALSE
。根据您的预期输出和任务,我认为您想比较列表元素的特定长度。
master_list <- list(list.a, list.b, list.c)
map_lgl(master_list, ~ all(lengths(.x) == 1:2))
[1] TRUE TRUE FALSE
不完全确定要求,但这里有 2 个可能有用的片段。
map_lgl(transpose(list(list.a, list.b, list.c)), ~ var(lengths(.x))==0)
a b
TRUE FALSE
或者对于更通用的输出,您可以更轻松地操作
map_dfr(list(list.a, list.b, list.c), ~map(.x, length))
a b
1 1 2
2 1 2
3 1 3
我有三个列表,每个列表有 2 个元素。如何检查每个列表中的每个元素是否具有相同的长度?最好使用 purrr。谢谢!
list.a = list(a = 1, b = c(1, 2))
list.b = list(a = 2, b = c(1, 2))
list.c = list(a = 3, b = c(1, 2, 3))
应该return T, T, F.
对于任意两个列表:
all(lengths(list.a)==lengths(list.b))
检查所有列表是否相等:
same_length <- function (x, y) all(lengths(x) == lengths(y))
Reduce(f, list(list.a, list.b, list.c))
如果你想使用purrr
:
same_length <- function (x, y) all(lengths(x) == lengths(y))
purrr::reduce(list(list.a, list.b, list.c), f)
每个列表中的每个元素都具有相同的长度? - 这将是单个 TRUE
或 FALSE
。根据您的预期输出和任务,我认为您想比较列表元素的特定长度。
master_list <- list(list.a, list.b, list.c)
map_lgl(master_list, ~ all(lengths(.x) == 1:2))
[1] TRUE TRUE FALSE
不完全确定要求,但这里有 2 个可能有用的片段。
map_lgl(transpose(list(list.a, list.b, list.c)), ~ var(lengths(.x))==0)
a b
TRUE FALSE
或者对于更通用的输出,您可以更轻松地操作
map_dfr(list(list.a, list.b, list.c), ~map(.x, length))
a b
1 1 2
2 1 2
3 1 3