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

R语言中分割字符串并检查分割后所有元素是否唯一的实现问题

问题解决方法

你的需求本质是判断单条id拆分后所有元素是否完全一致,对应判断逻辑为拆分后向量去重后的长度是否为1,修改原有sapply的匿名函数逻辑即可实现:

# 原数据框
df <- data.frame(
  "id" = c("001;002;003", "001;001;001", "001;001;002"),
  "v1" = c("a", "b", "c")
)

# 基础R实现
res <- sapply(strsplit(df$id, ";"), function(x) length(unique(x)) == 1)

输出的res向量就是你需要的FALSE TRUE FALSE结果,如果要直接合并到原数据框:

df$all_same_id <- res

最终数据框输出效果:

print(df)
id v1 all_same_id
1 001;002;003 a FALSE
2 001;001;001 b TRUE
3 001;001;002 c FALSE

可选tidyverse实现

如果常用tidyverse生态,也可以用如下写法:

library(dplyr)
library(stringr)

df <- df %>% 
  rowwise() %>% 
  mutate(all_same_id = n_distinct(str_split(id, ";")[[1]]) == 1) %>% 
  ungroup()

原代码问题说明

你原有代码的逻辑是将拆分去重后的id值和原数据框的完整id列(分号分隔的长字符串)做匹配,和你的需求完全不符,因此无法得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:00:01