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

R语言基于全量字典生成选中字符串的反向补集字符串方法

实现代码

你可以使用tidyverse生态的行处理逻辑快速实现需求,以下代码可直接得到和示例完全一致的输出:

library(dplyr)
library(stringr)

df_result <- df %>%
  # 按行处理每条记录
  rowwise() %>%
  mutate(
    # 拆分全量字典为单词向量
    full_vec = str_split(full_string, ", ") %>% unlist(),
    # 拆分选中字符串为单词向量,特殊处理空值
    selected_vec = ifelse(
      selected_strings == "", 
      list(character(0)), 
      str_split(selected_strings, ", ") %>% unlist()
    ) %>% unlist(),
    # 求差集后拼接为字符串
    inverse_string = setdiff(full_vec, selected_vec) %>% paste(collapse = ", ")
  ) %>%
  # 移除中间计算用的辅助列
  select(-full_vec, -selected_vec) %>%
  ungroup()

可选排序实现

如果需要将反向补集按字母顺序排序,仅需修改inverse_string的生成逻辑,增加sort()步骤即可:

inverse_string = setdiff(full_vec, selected_vec) %>% sort() %>% paste(collapse = ", ")

无额外依赖的Base R简化写法

如果你不想加载stringr包,也可以用Base R原生的strsplit函数实现拆分,逻辑完全一致:

library(dplyr)

df_result <- df %>%
  rowwise() %>%
  mutate(
    full_vec = strsplit(full_string, ", ")[[1]],
    selected_vec = ifelse(selected_strings == "", list(character(0)), strsplit(selected_strings, ", ")[[1]]) %>% unlist(),
    inverse_string = setdiff(full_vec, selected_vec) %>% paste(collapse = ", ")
  ) %>%
  select(-full_vec, -selected_vec) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 03:27:07