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

在R中判断列表列是否含向量元素,生成离职经理标识二元列

需求:生成标记员工是否有离职经理的二元列

问题背景

需要为数据框新增一个二元列manager_termed_yn,用来判断员工过去一年的经理列表(存储在all_manager列,每个元素为字符向量)中,是否包含terminated_managers向量里的任意离职经理姓名。

示例数据

# 构造示例数据框
df <- data.frame(
  id = 1:3,
  all_manager = I(list(c("John", "Mary"), c("Paul", "John"), c("Mary", "Tom", "Lilly")))
)
terminated_managers <- c("Mary", "Bill")

期望结果

生成的manager_termed_yn列结果为:TRUE, FALSE, TRUE


解决方案

方法1:基础R实现

用sapply遍历all_manager的每个列表元素,结合any()和%in%判断是否存在匹配项:

df$manager_termed_yn <- sapply(df$all_manager, function(x) any(x %in% terminated_managers))
  • 逻辑:对每个经理列表x,检查其中是否有元素属于离职经理集合,any()会返回是否存在至少一个匹配值。

方法2:tidyverse 实现

如果习惯使用tidyverse生态,可通过purrr::map_lgl生成布尔向量:

library(tidyverse)

df <- df %>%
  mutate(manager_termed_yn = map_lgl(all_manager, ~ any(.x %in% terminated_managers)))
  • 逻辑:map_lgl遍历all_manager的每个列表元素,返回布尔类型结果并直接作为新列值。

验证结果

运行代码后查看结果:

df$manager_termed_yn
# [1]  TRUE FALSE  TRUE

与期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:45:51