r - 匹配和计算 R 中的字符串

标签 r string character

我有一个由 4 个字母的所有可能组合组成的字符串数组 J, K, Q, Z .数组中的条目至少由两个字母组成,最多由 4 个字母组成。例如:data<-c("QK", "KQ", "JKQZ", "KJZ") .

我想计算数组中每个条目出现的次数,但不区分由相同字母但顺序不同的字符串。我知道 table(data)不这样做,因为它没有想到 QKKQ一样并返回

data
JKQZ  KJZ   KQ   QK 
   1    1    1    1 

我一直在看pmatchcharmatch但这似乎并没有达到我想要的效果。

编辑:我应该澄清一下,没有重复字母的条目。本质上,我不能有条目 ZZKZK

最佳答案

这是大卫评论/答案的更长变化:

vals    <- sort(unique(unlist(strsplit(data,''))))
combos  <- unlist(sapply(seq_along(vals),function(i)combn(vals,i,paste0,collapse="")))
newdata <- factor(sapply(strsplit(data,""),function(x)paste0(sort(x),collapse="")),
             levels=combos)
tab <- table(newdata)
# newdata
#    J    K    Q    Z   JK   JQ   JZ   KQ   KZ   QZ  JKQ  JKZ  JQZ  KQZ JKQZ 
#    0    0    0    0    0    0    0    2    0    0    0    1    0    0    1 
tab[tab>0] # alternately
#   KQ  JKZ JKQZ 
#    2    1    1 

关于r - 匹配和计算 R 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30492690/

相关文章:

linux - 内核模块升级,停机时间最短且无需重新启动

r - NA 上的子集

r - 在 R 中快速执行多次连接

r - 类别重叠分析

python - 将 PMML 模型导入 Python (Scikit-learn)

c# - 在 C# 中以智能方式删除所有有问题的字符

python - 为什么我要在 Python 中使用 int( input().strip() ) 而不是 int( input() )?

c - 数组返回的字符多于使用 malloc 分配的字符

c++ - Boost Spirit 字符解析器

python - 如何替换 r'\xb 0' with r'\260'