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

如何在data.table中实现列表列与外部向量的逐行匹配

实现方案(仅依赖data.table原生功能)

核心思路是通过by = 1:nrow(my_dt)实现逐行分组运算,直接对每行的col_y元素执行匹配操作,代码如下:

library(data.table)
# 直接生成新的列表列
my_dt[, new_col := .(.(external_vec %in% col_y)), by = 1:nrow(my_dt)]

代码说明

  • by = 1:nrow(my_dt) 是data.table中实现逐行处理的常用写法,会将数据框的每一行作为单独分组进行运算
  • 内层套两层.()的作用是将匹配得到的逻辑向量包装为列表的单个元素,保证最终new_col是符合要求的列表列

结果验证

运行上述代码后得到的new_col和你提供的purrr实现方案结果完全一致,可通过以下代码验证:

# 加载验证用包(仅做验证用,实际生产不需要)
library(purrr)
library(dplyr)
library(tibble)

# 生成purrr方案结果
purrr_res <- my_dt %>%
  add_column(ext_vec_as_col = list(external_vec)) %>%
  mutate(new_col = map2(ext_vec_as_col, col_y, ~.x %in% .y)) %>% 
  pull(new_col)

# 对比结果
identical(purrr_res, my_dt$new_col)
# 返回 [1] TRUE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:36:06