嵌套数据的dplyr逻辑隶属度测试
Dplyr logical membership test of nested data
我正在尝试为嵌套列中数据框变量的成员资格创建逻辑测试。使用 mtcars
作为替代,我通常可以复制我正在尝试做的事情(尽管使用的过程可能看起来 inefficient/circuitous 因为它不是我的真实数据):
library(dplyr)
m <- mtcars %>%
group_by(cyl) %>%
summarize(grz = unique(gear)) %>%
nest(data = c(cyl))
这会生成与 grz
变量关联的嵌套圆柱列 (data
):
# A tibble: 3 x 2
grz data
<dbl> <list>
1 4 <grouped_df [2 x 1]>
2 3 <grouped_df [3 x 1]>
3 5 <grouped_df [3 x 1]>
我想添加一个列来测试 grz
的值是否存在于嵌套的 data
列中,但似乎无法弄清楚为什么这不起作用:
library(purrr)
m %>% mutate(test = map2_lgl(.x = data, .y = grz, ~ .y %in% .x))
# A tibble: 3 x 3
grz data test
<dbl> <list> <lgl>
1 4 <grouped_df [2 x 1]> FALSE
2 3 <grouped_df [3 x 1]> FALSE
3 5 <grouped_df [3 x 1]> FALSE
grz
的第一行(值为 4)应该产生一个 TRUE
布尔值,而其他两个应该是 FALSE
.
我们需要提取列,因为 %in%
table
应该是 vector
或 matrix
library(dplyr)
library(purrr)
m %>%
mutate(test = map2_lgl(data, grz, ~ .y %in% .x$cyl))
-输出
# A tibble: 3 × 3
grz data test
<dbl> <list> <lgl>
1 4 <grouped_df [2 × 1]> TRUE
2 3 <grouped_df [3 × 1]> FALSE
3 5 <grouped_df [3 × 1]> FALSE
我正在尝试为嵌套列中数据框变量的成员资格创建逻辑测试。使用 mtcars
作为替代,我通常可以复制我正在尝试做的事情(尽管使用的过程可能看起来 inefficient/circuitous 因为它不是我的真实数据):
library(dplyr)
m <- mtcars %>%
group_by(cyl) %>%
summarize(grz = unique(gear)) %>%
nest(data = c(cyl))
这会生成与 grz
变量关联的嵌套圆柱列 (data
):
# A tibble: 3 x 2
grz data
<dbl> <list>
1 4 <grouped_df [2 x 1]>
2 3 <grouped_df [3 x 1]>
3 5 <grouped_df [3 x 1]>
我想添加一个列来测试 grz
的值是否存在于嵌套的 data
列中,但似乎无法弄清楚为什么这不起作用:
library(purrr)
m %>% mutate(test = map2_lgl(.x = data, .y = grz, ~ .y %in% .x))
# A tibble: 3 x 3
grz data test
<dbl> <list> <lgl>
1 4 <grouped_df [2 x 1]> FALSE
2 3 <grouped_df [3 x 1]> FALSE
3 5 <grouped_df [3 x 1]> FALSE
grz
的第一行(值为 4)应该产生一个 TRUE
布尔值,而其他两个应该是 FALSE
.
我们需要提取列,因为 %in%
table
应该是 vector
或 matrix
library(dplyr)
library(purrr)
m %>%
mutate(test = map2_lgl(data, grz, ~ .y %in% .x$cyl))
-输出
# A tibble: 3 × 3
grz data test
<dbl> <list> <lgl>
1 4 <grouped_df [2 × 1]> TRUE
2 3 <grouped_df [3 × 1]> FALSE
3 5 <grouped_df [3 × 1]> FALSE