You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dplyr嵌套数据逻辑成员测试:判断grz值是否存在于嵌套data列

问题原因

你当前代码返回全FALSE的核心原因是:map2中传入的.x是嵌套的tibble对象,你直接判断数值是否存在于数据框对象中,而没有提取数据框内的列向量进行成员关系校验,自然无法匹配到对应值。

解决代码

只需要在匿名函数中提取嵌套数据框内的cyl列再做判断即可,示例如下:

library(dplyr)
library(purrr)

# 原始数据构造逻辑不变
m <- mtcars %>%
  group_by(cyl) %>% 
  summarize(grz = unique(gear)) %>% 
  nest(data = c(cyl))

# 修正后的成员校验逻辑
m %>% 
  mutate(test = map2_lgl(
    .x = data, 
    .y = 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
补充说明

如果嵌套列内的字段名不固定,也可以用unlist把嵌套数据框的所有值转为向量后再判断,写法更通用:

m %>% 
  mutate(test = map2_lgl(data, grz, ~ .y %in% unlist(.x)))

内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:24:04