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

如何用R tidy风格获取字符串向量的交集(非并集)?

用tidy风格函数获取字符串向量交集的简洁方法
  • 你原来的实现能得到结果,但确实有点繁琐,没必要把向量转成tibble再做inner_join。tidyverse里的dplyr::intersect()可以直接处理向量,一步就能拿到交集:
library(dplyr)

string_a <- c("ab", "bc", "cd", "df", "aq")
string_b <- c("ac", "bc", "bd", "df", "aq")

# 直接获取两个向量的交集
inter_str <- dplyr::intersect(string_a, string_b)

运行后得到的结果和你原来的代码完全一致:[1] "bc" "df" "aq"

  • 如果你的向量里有重复元素,且想要保留交集里的重复项(比如string_a里有两个"bc",string_b里有三个"bc",希望结果里也保留两个"bc"),可以用更简洁的tibble操作方式:
library(dplyr)
library(tibble)

string_a <- c("ab", "bc", "bc", "cd", "df", "aq")
string_b <- c("ac", "bc", "bc", "bc", "bd", "df", "aq")

inter_str <- tibble(value = string_a) %>%
  semi_join(tibble(value = string_b), by = "value") %>%
  pull(value)

这种写法会保留string_a中重复的交集元素,结果是[1] "bc" "bc" "df" "aq"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:51:03