如何在R中生成单词向量的所有无序组合并添加+分隔符?
生成单词向量的所有无序组合(带"+"分隔符)
输入向量:
str <- c("The", "Cat", "Jumped")
需求说明:生成该向量的所有无序组合,多元素组合用+作为分隔符,需避免重复的顺序颠倒组合(如仅保留"The + Cat",不出现"Cat + The"),最终输出需匹配以下结果:
want <- c("The", "Cat", "Jumped", "The + Cat", "The + Jumped", "Cat + Jumped", "The + Cat + Jumped")
解决方案
利用combn函数(本身就生成无序组合),结合遍历所有可能的组合长度,即可实现需求:
str <- c("The", "Cat", "Jumped") # 遍历1到向量长度的所有组合规模,拼接成目标格式 result <- unlist(lapply(1:length(str), function(n) { combn(str, n, paste, collapse = " + ") })) # 输出结果 result
代码说明
lapply(1:length(str), ...):遍历所有可能的组合长度(从单个元素到全量元素)combn(str, n, paste, collapse = " + "):对每个长度n,生成所有无序组合,并自动用+拼接组合内的元素unlist():将列表形式的结果转换为一维向量,与目标输出格式完全匹配
运行代码后,result与want完全一致。
内容的提问来源于stack exchange,提问作者jpsmith
相关产品推荐
相关产品推荐

